ConnectionManager::Private::ProtocolWrapper::ProtocolWrapper( const ConnectionManagerPtr &cm, const QString &objectPath, const QString &name, const QVariantMap &props) : StatelessDBusProxy(cm->dbusConnection(), cm->busName(), objectPath, FeatureCore), OptionalInterfaceFactory<ProtocolWrapper>(this), mReadinessHelper(readinessHelper()), mInfo(ProtocolInfo(cm, name)), mImmutableProps(props), mHasMainProps(false), mHasAvatarsProps(false), mHasPresenceProps(false), mHasAddressingProps(false) { fillRCCs(); ReadinessHelper::Introspectables introspectables; // As Protocol does not have predefined statuses let's simulate one (0) ReadinessHelper::Introspectable introspectableCore( QSet<uint>() << 0, // makesSenseForStatuses Features(), // dependsOnFeatures QStringList(), // dependsOnInterfaces (ReadinessHelper::IntrospectFunc) &ProtocolWrapper::introspectMain, this); introspectables[FeatureCore] = introspectableCore; mReadinessHelper->addIntrospectables(introspectables); }
void MediaRendererDevice::setInitialValues() { #if defined(HAVE_MAD) || defined(HAVE_FFMPEG) m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/mpeg:DLNA.ORG_PN=MP3")); #endif #if defined(HAVE_FLAC) || defined(HAVE_FFMPEG) m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/flac:*")); m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/x-flac:*")); #endif #ifdef HAVE_FFMPEG // assume ffmpeg supports these formats (possibly make this more smart and actually check ffmpeg config options) m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/L16;rate=44100;channels=1:DLNA.ORG_PN=LPCM")); m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM")); //m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/L16;rate=48000;channels=1:DLNA.ORG_PN=LPCM")); //m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/L16;rate=48000;channels=2:DLNA.ORG_PN=LPCM")); m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE")); m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL")); m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO")); m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/3gpp:DLNA.ORG_PN=AAC_ISO")); //m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/vnd.dlna.adts:DLNA.ORG_PN=AAC_ADTS_320")); m_SupportedProtocols.push_back(ProtocolInfo("http-wavetunes:*:audio/x-ms-wma:*")); m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/wav:*")); m_SupportedProtocols.push_back(ProtocolInfo("http-get:*:audio/x-wav:*")); #endif std::stringstream ss; for (auto& protocol : m_SupportedProtocols) { if (ss.tellp() > 0) { ss << ','; } ss << protocol.toString(); } m_ConnectionManager.setVariable(ConnectionManager::Variable::SourceProtocolInfo, ""); m_ConnectionManager.setVariable(ConnectionManager::Variable::SinkProtocolInfo, ss.str()); m_ConnectionManager.setVariable(ConnectionManager::Variable::CurrentConnectionIds, "0"); m_ConnectionManager.setVariable(ConnectionManager::Variable::ArgumentTypeConnectionStatus, "OK"); m_CurrentConnectionInfo.connectionStatus = ConnectionManager::ConnectionStatus::Ok; m_CurrentConnectionInfo.direction = ConnectionManager::Direction::Input; m_RenderingControl.setVariable(RenderingControl::Variable::PresetNameList, "FactoryDefaults"); m_RenderingControl.setVolume(0, RenderingControl::Channel::Master, m_Playback->getVolume()); m_RenderingControl.setMute(0, RenderingControl::Channel::Master, m_Playback->getMute()); m_AVTransport.setInstanceVariable(0, AVTransport::Variable::CurrentTransportActions, toString(m_Playback->getAvailableActions())); m_AVTransport.setInstanceVariable(0, AVTransport::Variable::PlaybackStorageMedium, "NETWORK"); m_AVTransport.setInstanceVariable(0, AVTransport::Variable::TransportState, AVTransport::toString(PlaybackStateToTransportState(m_Playback->getState()))); m_AVTransport.setInstanceVariable(0, AVTransport::Variable::CurrentPlayMode, toString(AVTransport::PlayMode::Normal)); m_AVTransport.setInstanceVariable(0, AVTransport::Variable::NumberOfTracks, std::to_string(m_Queue.getNumberOfTracks())); m_AVTransport.setInstanceVariable(0, AVTransport::Variable::CurrentTrackDuration, durationToString(0)); m_AVTransport.setInstanceVariable(0, AVTransport::Variable::RelativeTimePosition, durationToString(0)); m_AVTransport.setInstanceVariable(0, AVTransport::Variable::AbsoluteTimePosition, "NOT_IMPLEMENTED"); }