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);
}
Пример #2
0
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");
}