Skip to content

OcaMediaTransportApplication#

This document describes the device side implementation of OcaMediaTransportApplication. This class is documented in the AES70 standard as:

Connection Management 4 (CM4) class. Specifies the device's control interface to media transport functions. This is the anchoring class for CM4 data structures. Abstract class that shall be subclassed for each media transport Adaptation.


Overview#

Class Declaration#

The device side implementation has the following signature.

namespace aes70::device
{
  template <class Implementation>
  class OcaMediaTransportApplication : public OcaNetworkApplication<Implementation>
  {

  };
}

The template argument Implementation may implement the following methods.

Note

The signatures given here are just one possibility and that most methods are optional. Implement only those methods which make sense in the context of your device. See the documentation in Implementing AES70 Classes for more details.

class MyOcaMediaTransportApplicationImplementation
{
  // Methods defined by OcaMediaTransportApplication
  OcaPortID AddPort(OcaString Name, OcaIODirection Mode);
  void DeletePort(OcaPortID ID);
  OcaList<OcaPort> GetPorts();
  OcaString GetPortName(OcaPortID PortID);
  void SetPortName(OcaPortID PortID, OcaString Name);
  OcaMap<OcaPortID, OcaPortClockMapEntry> GetPortClockMap();
  void SetPortClockMap(OcaMap<OcaPortID, OcaPortClockMapEntry> Map);
  void SetPortClockMapEntry(OcaPortID ID, OcaPortClockMapEntry Entry);
  void DeletePortClockMapEntry(OcaPortID ID);
  OcaPortClockMapEntry GetPortClockMapEntry(OcaPortID ID);
  std::tuple<OcaUint16,OcaUint16> GetMaxEndpointCounts();
  OcaUint16 GetMaxPortsPerChannel();
  OcaUint16 GetMaxChannelsPerEndpoint();
  void SetAlignmentLevelLimits(OcaInterval<OcaDBFS> Limits);
  OcaList<OcaMediaStreamModeCapability> GetMediaStreamModeCapabilities();
  void SetMediaStreamModeCapabilities(OcaList<OcaMediaStreamModeCapability> Capabilities);
  OcaMediaStreamModeCapability GetMediaStreamModeCapability(OcaID16 CapabilityID);
  OcaMediaTransportTimingParameters GetTransportTimingParameters();
  void SetTransportTimingParameters(OcaMediaTransportTimingParameters Parameters);
  OcaInterval<OcaDBFS> GetAlignmentLevelLimits();
  OcaList<OcaMediaStreamEndpoint> GetEndpoints();
  OcaMediaStreamEndpoint GetEndpoint(OcaMediaStreamEndpointID ID);
  OcaMap<OcaMediaStreamEndpointID, OcaMediaStreamEndpointStatus> GetEndpointStatuses();
  OcaMediaStreamEndpointStatus GetEndpointStatus(OcaMediaStreamEndpointID ID);
  void AddEndpoint(OcaMediaStreamEndpointState InitialStatus);
  void DeleteEndpoint(OcaMediaStreamEndpointID ID);
  void ApplyEndpointCommand(OcaMediaStreamEndpointID EndpointID, OcaMediaStreamEndpointCommand Command);
  void SetEndpointUserLabel(OcaMediaStreamEndpointID EndpointID, OcaString Label);
  void SetEndpointMediaStreamMode(OcaMediaStreamEndpointID EndpointID, OcaMediaStreamMode StreamMode);
  void SetEndpointChannelMap(OcaMediaStreamEndpointID EndpointID, OcaMultiMap<OcaID16, OcaPortID> ChannelMap);
  void SetEndpointAlignmentLevel(OcaMediaStreamEndpointID EndpointID, OcaDBFS Level);
  std::tuple<OcaTimeReferenceType,OcaString> GetEndpointTimeSource(OcaMediaStreamEndpointID ID);
  void SetEndpointAdaptationData(OcaMediaStreamEndpointID EndpointID, OcaAdaptationData Data);
  OcaMap<OcaMediaStreamEndpointID, OcaCounterSet> GetEndpointCounterSets();
  OcaCounterSet GetEndpointCounterSet(OcaMediaStreamEndpointID EndpointID);
  OcaCounter GetEndpointCounter(OcaMediaStreamEndpointID EndpointID, OcaID16 CounterID);
  void AttachEndpointCounterNotifier(OcaMediaStreamEndpointID EndpointID, OcaID16 CounterID, OcaONo NotifierONo);
  void DetachEndpointCounterNotifier(OcaMediaStreamEndpointID EndpointID, OcaID16 CounterID, OcaONo NotifierONo);
  void ResetEndpointCounterSet(OcaMediaStreamEndpointID EndpointID, OcaID16 CounterID);
  OcaList<OcaONo> GetTransportSessionControlAgentONos();
  void SetTransportSessionControlAgentONos(OcaList<OcaONo> ONos);

  // Methods defined by OcaNetworkApplication
  OcaString GetLabel();
  void SetLabel(OcaString Label);
  OcaONo GetOwner();
  std::tuple<OcaRolePath,OcaONoPath> GetPath();
  OcaList<OcaNetworkInterfaceAssignment> GetNetworkInterfaceAssignments();
  void SetNetworkInterfaceAssignments(OcaList<OcaNetworkInterfaceAssignment> Assignments);
  OcaString GetAdaptationIdentifier();
  OcaAdaptationData GetAdaptationData();
  void SetAdaptationData(OcaAdaptationData Data);
  OcaCounterSet GetCounterSet();
  OcaCounter GetCounter(OcaID16 CounterID);
  void AttachCounterNotifier(OcaID16 CounterID, OcaONo ONo);
  void DetachCounterNotifier(OcaID16 CounterID, OcaONo ONo);
  void ResetCounters();

  // Methods defined by OcaRoot
  OcaBoolean GetLockable();
  void SetLockNoReadWrite();
  void Unlock();
  OcaString GetRole();
  void SetLockNoWrite();
  OcaLockState GetLockState();

};

Events#