示例#1
0
gboolean MiracBroker::send_cb (gint fd, GIOCondition condition)
{
    try {
        if (!connection_->Send())
            return G_SOURCE_CONTINUE;
    } catch (const MiracConnectionLostException &exception) {
        on_connection_failure(CONNECTION_LOST);
    } catch (const std::exception &x) {
        WDS_WARNING("exception: %s", x.what());
    }
    return G_SOURCE_REMOVE;
}
示例#2
0
gboolean MiracBroker::listen_cb (gint fd, GIOCondition condition)
{
    try {
        connection(network_->Accept());
        WDS_LOG("connection from: %s", connection_->GetPeerAddress().c_str());
        on_connected();
    } catch (const std::exception &x) {
        WDS_WARNING("exception: %s", x.what());
    }

    return G_SOURCE_CONTINUE;
}
示例#3
0
std::unique_ptr<Reply> M3Handler::HandleMessage(Message* message) {
  // FIXME : resolve clashes between wds exported and internal rtsp type names.
  //using namespace rtsp;
  auto received_payload = ToGetParameterPayload(message->payload());
  if (!received_payload)
    return nullptr;

  auto reply = std::unique_ptr<Reply>(new Reply(rtsp::STATUS_OK));
  auto reply_payload = new rtsp::PropertyMapPayload();
  for (const std::string& property : received_payload->properties()) {
      std::shared_ptr<rtsp::Property> new_prop;
      if (property == GetPropertyName(rtsp::AudioCodecsPropertyType)){
          // FIXME: declare that we support absolutely every audio codec/format,
          // but there should be a MediaManager API for it
          auto codec_lpcm = AudioCodec(LPCM, AudioModes(3), 0);
          auto codec_aac = AudioCodec(AAC, AudioModes(15), 0);
          auto codec_ac3 = AudioCodec(AC3, AudioModes(7), 0);
          std::vector<AudioCodec> codec_list;
          codec_list.push_back(codec_lpcm);
          codec_list.push_back(codec_aac);
          codec_list.push_back(codec_ac3);
          new_prop.reset(new rtsp::AudioCodecs(codec_list));
          reply_payload->AddProperty(new_prop);
      } else if (property == GetPropertyName(rtsp::VideoFormatsPropertyType)){
          new_prop.reset(new rtsp::VideoFormats(ToSinkMediaManager(manager_)->GetNativeVideoFormat(),
              false,
              ToSinkMediaManager(manager_)->GetSupportedH264VideoCodecs()));
          reply_payload->AddProperty(new_prop);
      } else if (property == GetPropertyName(rtsp::Video3DFormatsPropertyType)){
          new_prop.reset(new rtsp::Formats3d());
          reply_payload->AddProperty(new_prop);
      } else if (property == GetPropertyName(rtsp::ContentProtectionPropertyType)){
          new_prop.reset(new rtsp::ContentProtection());
          reply_payload->AddProperty(new_prop);
      } else if (property == GetPropertyName(rtsp::DisplayEdidPropertyType)){
          new_prop.reset(new rtsp::DisplayEdid());
          reply_payload->AddProperty(new_prop);
      } else if (property == GetPropertyName(rtsp::CoupledSinkPropertyType)){
          new_prop.reset(new rtsp::CoupledSink());
          reply_payload->AddProperty(new_prop);
      } else if (property == GetPropertyName(rtsp::ClientRTPPortsPropertyType)){
          new_prop.reset(new rtsp::ClientRtpPorts(
              ToSinkMediaManager(manager_)->GetLocalRtpPorts().first,
              ToSinkMediaManager(manager_)->GetLocalRtpPorts().second));
          reply_payload->AddProperty(new_prop);
      } else if (property == GetPropertyName(rtsp::I2CPropertyType)){
          new_prop.reset(new rtsp::I2C(0));
          reply_payload->AddProperty(new_prop);
      } else if (property == GetPropertyName(rtsp::UIBCCapabilityPropertyType)){
          new_prop.reset(new rtsp::UIBCCapability());
          reply_payload->AddProperty(new_prop);
      } else if (property == GetPropertyName(rtsp::ConnectorTypePropertyType)){
          new_prop.reset(new rtsp::ConnectorType(ToSinkMediaManager(manager_)->GetConnectorType()));
          reply_payload->AddProperty(new_prop);
      } else if (property == GetPropertyName(rtsp::StandbyResumeCapabilityPropertyType)){
          new_prop.reset(new rtsp::StandbyResumeCapability(false));
          reply_payload->AddProperty(new_prop);
      } else {
          WDS_WARNING("** GET_PARAMETER: Ignoring unsupported property '%s'.", property.c_str());
      }
  }
  reply->set_payload(std::unique_ptr<Payload>(reply_payload));

  return reply;
}
示例#4
0
void DesktopMediaManager::SendIDRPicture() {
  WDS_WARNING("Unimplemented IDR picture request");
}