Skip to content

Latest commit

 

History

History
326 lines (252 loc) · 13.6 KB

CHANGELOG-avdecc.md

File metadata and controls

326 lines (252 loc) · 13.6 KB

Avdecc Library Changelog

All notable changes to the Avdecc Library will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

[3.4.1] - 2023-01-11

[3.4.0] - 2023-01-05

Added

  • Checking validity of EntityModel given to a ControllerEntity or AggregateEntity
  • Added sequenceID parameter to la::avdecc::entity::controller::Delegate::onAemAecpUnsolicitedReceived

Fixed

  • EntityModel loader correctly set current active configuration
  • Better handling of NOT_SUPPORTED AEM-AECP responses

[3.3.0] - 2022-11-22

Added

Changed

  • Reflecting an unhandled AECP command uses NOT_IMPLEMENTED instead of NOT_SUPPORTED

Fixed

  • Crash when loading ANS/AVE file without any configuration descriptor
  • Discarding inflight and queued messages when an entity goes offline

[3.2.4] - 2022-07-08

Fixed

  • Possible crash during uninitialization of the EndStation

[3.2.3] - 2022-04-22

Added

  • injectRawPacket method to ProtocolInterface

Changed

  • Generated EntityID now follows the new recommendation of IEEE (full MacAddress on MSB)
  • Full network message scheduler refactoring

[3.2.2] - 2022-01-20

Added

Changed

  • la::avdecc::entity::model::StreamFormatInfo now uses la::avdecc::entity::model::SamplingRate instead of its own enum

Fixed

[3.2.1] - 2021-12-10

[3.2.0] - 2021-07-21

Added

Changed

Fixed

[3.1.1] - 2021-04-02

Added

  • Validating Control dynamic values (based on static values)

Changed

  • Renamed la::avdecc::entity::model::ControlType to la::avdecc::entity::model::StandardControlType
  • la::avdecc::entity::model::ControlType is now an EUI-64

Fixed

[3.1.0] - 2021-01-18

Added

Changed

  • When an observer registers to a ProtocolInterface, it now immediately receives notifications about already known entities (both local and remote)
  • ControllerEntity now always sends messages to the same AvbInterface in case of cable redundancy

Fixed

[3.0.2] - 2020-09-14

Added

  • Automatic discovery delay is now configurable for a Controller Entity

Fixed

[3.0.1] - 2020-05-25

Changed

  • Improved la::avdecc::utils::EnumBitfield class to be fully constexpr

Fixed

[3.0.0] - 2020-03-10

Added

  • AEM GetConfiguration method
  • ProtocolInterface observer events for all received PDUs (low level)
  • Delegate class in ProtocolInterface to handle VendorUnique messages
  • ACMP inflight queue
  • AECP/ACMP throttling
  • Partial support for VendorUnique message in macOS Native ProtocolInterface
  • C Bindings library

Changed

  • Controller commands result handler properly return all fields in the protocol
  • Removed listenerStream field from entity::model::StreamConnectionState
  • Renamed entity::model::StreamConnectionState to entity::model::StreamInputConnectionInfo
  • MacOS Native ProtocolInterface is now restricted to macOS Catalina and later

Fixed

[2.11.3] - 2019-11-20

[2.11.2] - 2019-11-08

[2.11.1] - 2019-10-02

Changed

  • More control over what is dumped when serializing an entity

[2.11.0] - 2019-09-10

Added

  • Precompiled headers on windows
  • Improved protocol warning messages

[2.10.0] - 2019-06-24

Added

  • Entity Model Tree definition
  • Entity Model dump as readable json file
  • Entity Model load from readable json file
  • NetworkInterfaceHelper observer to monitor changes in adapters status
  • Controller statistics counters

Changed

  • NetworkInterfaceHelper isActive field replace with isEnabled and isConnected
  • protocol::MvuFeaturesFlags TypedDefine moved to MilanInfoFeaturesFlags EnumBitfield

Fixed

[2.9.2] - 2019-05-20

Added

  • Support for IdentifyNotification in ProtocolInterface and ControllerEntity
  • Support for Entity Descriptor counters

[2.9.1] - 2019-03-13

Changed

Fixed

  • macOS Native Protocol Interface correctly handles incoming AECP Commands
  • macOS Native Protocol Interface simulates a time out for VENDOR_UNIQUE messages, instead of incorrectly handling them (time out required due to bug in AVBFramework)

Removed

  • GenericAecpdu class, due to potential misusage
  • Aecpdu::copy method, no longer necessary

[2.9.0] - 2019-02-13

Added

  • Support for Milan STREAM_OUTPUT counters

Changed

  • Removed macAddress parameter from sendAecpCommand and sendAecpResponse (automatically getting it from the AECPDU)
  • Returning ProtocolInterface::Error::InvalidParameters when trying to enable/disable advertising on a non-existent InterfaceIndex

Fixed

  • Incorrect error returned by EndStation's LocalEntity creation code
  • No longer sending ADP DEPARTING message twice when destroying a LocalEntity

[2.8.0] - 2019-01-23

Added

  • Notification when a controller is being deregistered from unsolicited notifications
  • Notification when (some or all) audio mappings are added or removed
  • Notification when an entity is locked/unlocked by another controller
  • setStreamInputInfo, setStreamOutputInfo, getAsPath
  • Milan extended GetStreamInfo
  • Code to try to prevent deadlocks
  • Watch dog thread

Changed

  • lockEntity/unlockEntity signature and result handler changed to include the locking entity and descriptor type/index
  • GetMilanInfo now return a struct instead of individual fields
  • Updated GetMilanInfo to match Milan specification

Fixed

  • Incorrect value for AemLockEntityFlags::Unlock flag

[2.7.2] - 2018-10-30

[2.7.1] - 2018-10-02

Added

Changed

  • Split ALLOW_BIG_AEM_PAYLOADS to ALLOW_SEND_BIG_AECP_PAYLOADS and ALLOW_RECV_BIG_AECP_PAYLOADS

[2.7.0] - 2018-09-12

Added

  • Support for MemoryObject Operations (Contributed by d&b)
  • Protocol and ProtocolInterface classes exposed in the public API
  • Removed InterfaceIndex field from ProtocolInterface (not its place)

Changed

  • la::avdecc::protocol::ProtocolInterface::SupportedProtocolInterfaceTypes and la::avdecc::CompileOptions are now la::avdecc::EnumBitfield

Fixed

  • ALLOW_BIG_AEM_PAYLOADS option not properly used in serializer

[2.6.3] - 2018-08-08

[2.6.2] - 2018-08-06

Fixed

[2.6.1] - 2018-07-30

Added

[2.6.0] - 2018-07-17

Added

  • getStreamInputFormat, getStreamOutputFormat, setAudioUnitName, getAudioUnitName, setAvbInterfaceName, getAvbInterfaceName, setClockSourceName, getClockSourceName, getClockSource, setMemoryObjectName, getMemoryObjectName, setAudioClusterName, getAudioClusterName, setClockDomainName, getClockDomainName, getAudioUnitSamplingRate, getVideoClusterSamplingRate, getSensorClusterSamplingRate, setMemoryObjectLength, getMemoryObjectLength
  • Notification callbacks for onAudioUnitNameChanged, onAvbInterfaceNameChanged, onClockSourceNameChanged, onMemoryObjectNameChanged, onAudioClusterNameChanged, onClockDomainNameChanged, onMemoryObjectLengthChanged

Changed

  • la::avdecc::Entity::getVendorEntityModelID() renamed getEntityModelID()
  • la::avdecc::entity::model::makeVendorEntityModel() renamed makeEntityModelID()
  • la::avdecc::entity::model::splitVendorEntityModel() renamed splitEntityModelID()
  • Every occurrence of vendorEntityModelID renamed entityModelID
  • la::avdecc::UniqueIdentifier is now a complex type with member helper methods
  • some methods of la::avdecc::protocol::Adpdu were not declared noexcept
  • la::avdecc::entity::model::AvbInterfaceDescriptor::clockIdentify renamed clockIdentity

Removed

  • la::avdecc::entity::model::VendorEntityModel (should be la::avdecc::UniqueIdentifier)

Fixed

  • Getting system current time after mutex has been acquired, not before

[2.5.3] - 2018-06-18

Fixed

[2.5.2] - 2018-06-15

Added

  • New static method to get adapted compatible formats from listener and talker available ones
  • New static methods to build StreamFormat from attributes

[2.5.0] - 2018-06-01

Fixed

  • Removed noexcept qualifier from all std::function (c++17 compatibility)
  • Allowing AEM payloads exceeding maximum protocol value (new compilation flag: ALLOW_BIG_AEM_PAYLOADS). Required for Q6 Core devices.

[2.4.0] - 2018-05-15

Added

  • Global API to retrieve the compilation options of the library
  • CMake compilation option to use custom std::any

Fixed

  • Properly handling AvailableIndex going backwards in ADP messages (fast entity powercycle)
  • Possible deadlock when using macOS native protocol interface
  • Re-enabled AVnu Alliance Network Redundancy support

[2.3.0] - 2018-03-30

Added

  • Support for the following read descriptors: AudioUnit, Jack, AvbInterface, ClockSource, MemoryObject, StreamPort, ExternalPort, InternalPort, AudioCluster, AudioMap, ClockDomain
  • Cole Peterson's redundant streams association detection
  • Support for Talker Stream Connections
  • Method to forcefully remove a connection from a talker's StreamOutput (DisconnectTX spoofing)
  • Support for GetAvbInfo command and unsolicited notifications
  • getSampleSize and getSampleBitDepth to StreamFormatInfo

Changed

  • ACMP stream identification refactoring (new type describing the couple EntityID/StreamIndex)

Fixed

  • 50 msec delay before sending a new AECP message using pcap protocol interface
  • Logger observer not removed during unregisterObserver

[2.2.0] - 2017-12-01

Added

Fixed

  • Possible crash during shutdown
  • IGNORE_INVALID_NON_SUCCESS_AEM_RESPONSES flag not properly working for Motu devices

[2.1.0] - 2017-11-22

Changed

  • Acquire/Release controller commands (and handlers) now support descriptor type/index

[2.0.10] - 2017-10-27

Fixed

[2.0.0] - 2017-10-10

Changed

  • Full rework of the low level data structures

[1.0.0] - 2016-01-15

Added

  • Support for minimal audio related 1722.1 messages