Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/dom/media/webrtc/sdp/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 4 kB image not shown  

Quelle  SdpHelper.h   Sprache: C

 
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */


#ifndef _SDPHELPER_H_
#define _SDPHELPER_H_

#include "nsError.h"

#include "sdp/SdpMediaSection.h"
#include "sdp/SdpAttribute.h"

#include "transport/m_cpp_utils.h"

#include <string>
#include <map>
#include <vector>

namespace mozilla {
class SdpMediaSection;
class Sdp;

class SdpHelper {
 public:
  // Takes a std::string* into which error strings will be written for the
  // lifetime of the SdpHelper.
  explicit SdpHelper(std::string* errorDest) : mLastError(*errorDest) {}
  ~SdpHelper() {}

  nsresult GetComponent(const std::string& candidate, size_t* component);
  nsresult CopyTransportParams(size_t numComponents,
                               const SdpMediaSection& source,
                               SdpMediaSection* dest);
  bool AreOldTransportParamsValid(const Sdp& oldAnswer,
                                  const Sdp& offerersPreviousSdp,
                                  const Sdp& newOffer, size_t level);
  bool IceCredentialsDiffer(const SdpMediaSection& msection1,
                            const SdpMediaSection& msection2);

  bool MsectionIsDisabled(const SdpMediaSection& msection) const;
  static void DisableMsection(Sdp* sdp, SdpMediaSection* msection);

  // Maps each mid to the m-section that owns its bundle transport.
  // Mids that do not appear in an a=group:BUNDLE do not appear here.
  typedef std::map<std::string, const SdpMediaSection*> BundledMids;

  nsresult GetBundledMids(const Sdp& sdp, BundledMids* bundledMids);

  bool OwnsTransport(const Sdp& localSdp, uint16_t level, sdp::SdpType type);
  bool OwnsTransport(const SdpMediaSection& msection,
                     const BundledMids& bundledMids, sdp::SdpType type);
  void GetBundleGroups(const Sdp& sdp,
                       std::vector<SdpGroupAttributeList::Group>* groups) const;

  nsresult GetMidFromLevel(const Sdp& sdp, uint16_t level, std::string* mid);
  nsresult GetIdsFromMsid(const Sdp& sdp, const SdpMediaSection& msection,
                          std::vector<std::string>* streamId);
  nsresult GetMsids(const SdpMediaSection& msection,
                    std::vector<SdpMsidAttributeList::Msid>* msids);
  nsresult ParseMsid(const std::string& msidAttribute, std::string* streamId,
                     std::string* trackId);
  nsresult AddCandidateToSdp(Sdp* sdp, const std::string& candidate,
                             uint16_t level, const std::string& ufrag);
  nsresult SetIceGatheringComplete(Sdp* sdp, const std::string& ufrag);
  nsresult SetIceGatheringComplete(Sdp* sdp, uint16_t level,
                                   const std::string& ufrag);
  void SetDefaultAddresses(const std::string& defaultCandidateAddr,
                           uint16_t defaultCandidatePort,
                           const std::string& defaultRtcpCandidateAddr,
                           uint16_t defaultRtcpCandidatePort,
                           SdpMediaSection* msection);
  void SetupMsidSemantic(const std::vector<std::string>& msids, Sdp* sdp) const;

  std::string GetCNAME(const SdpMediaSection& msection) const;

  SdpMediaSection* FindMsectionByMid(Sdp& sdp, const std::string& mid) const;

  const SdpMediaSection* FindMsectionByMid(const Sdp& sdp,
                                           const std::string& mid) const;

  nsresult CopyStickyParams(const SdpMediaSection& source,
                            SdpMediaSection* dest);
  bool HasRtcp(SdpMediaSection::Protocol proto) const;
  static SdpMediaSection::Protocol GetProtocolForMediaType(
      SdpMediaSection::MediaType type);
  void AppendSdpParseErrors(
      const std::vector<std::pair<size_t, std::string> >& aErrors,
      std::string* aErrorString);

  static bool GetPtAsInt(const std::string& ptString, uint16_t* ptOutparam);

  void NegotiateAndAddExtmaps(
      const SdpMediaSection& remoteMsection,
      std::vector<SdpExtmapAttributeList::Extmap>& localExtensions,
      SdpMediaSection* localMsection);

  bool SdpMatch(const Sdp& sdp1, const Sdp& sdp2);
  nsresult ValidateTransportAttributes(const Sdp& aSdp, sdp::SdpType aType);

 private:
  std::string& mLastError;

  DISALLOW_COPY_ASSIGN(SdpHelper);
};
}  // namespace mozilla

#endif  // _SDPHELPER_H_

Messung V0.5
C=92 H=100 G=95

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.