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.
- More control over what is dumped when serializing an entity
- Precompiled headers on windows
- Improved protocol warning messages
- 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
- NetworkInterfaceHelper isActive field replace with isEnabled and isConnected
- protocol::MvuFeaturesFlags TypedDefine moved to MilanInfoFeaturesFlags EnumBitfield
- NetworkInterfaces Helper fully working on win7 and win10
- json::Exception being thrown across shared library boundary
- Support for IdentifyNotification in ProtocolInterface and ControllerEntity
- Support for Entity Descriptor counters
- Replaced all la::avdecc::enum_traits with la::avdecc::EnumBitfield
- StreamFormat and SamplingRate now have their own class, instead of just an alias
- 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)
- GenericAecpdu class, due to potential misusage
- Aecpdu::copy method, no longer necessary
- Support for Milan STREAM_OUTPUT counters
- 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
- Incorrect error returned by EndStation's LocalEntity creation code
- No longer sending ADP DEPARTING message twice when destroying a LocalEntity
- 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
- 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
- Incorrect value for AemLockEntityFlags::Unlock flag
- Support for GET_COUNTERS command and unsolicited notifications
- Support for VendorUnique AECP messages
- Support for 500Hz CRF stream format
- Split ALLOW_BIG_AEM_PAYLOADS to ALLOW_SEND_BIG_AECP_PAYLOADS and ALLOW_RECV_BIG_AECP_PAYLOADS
- 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)
- la::avdecc::protocol::ProtocolInterface::SupportedProtocolInterfaceTypes and la::avdecc::CompileOptions are now la::avdecc::EnumBitfield
- ALLOW_BIG_AEM_PAYLOADS option not properly used in serializer
- CRF StreamFormat should be a 0 channel stream, not 1
- ControllerStateMachine AECP/ACMP SequenceID starts at 0, not 1
- 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
- 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
- la::avdecc::entity::model::VendorEntityModel (should be la::avdecc::UniqueIdentifier)
- Getting system current time after mutex has been acquired, not before
- Descriptors value initialization for LocalizedStringReference type
- Possible crash using "macOS native interface"
- New static method to get adapted compatible formats from listener and talker available ones
- New static methods to build StreamFormat from attributes
- 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.
- Global API to retrieve the compilation options of the library
- CMake compilation option to use custom std::any
- 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
- 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
- ACMP stream identification refactoring (new type describing the couple EntityID/StreamIndex)
- 50 msec delay before sending a new AECP message using pcap protocol interface
- Logger observer not removed during unregisterObserver
- Support for setConfiguration command
- Partial support for SET_CONFIGURATION unsolicited notification
- Virtual ProtocolInterface, allowing better unit testing
- Possible crash during shutdown
- IGNORE_INVALID_NON_SUCCESS_AEM_RESPONSES flag not properly working for Motu devices
- Acquire/Release controller commands (and handlers) now support descriptor type/index
- Full rework of the low level data structures
- Support for minimal audio related 1722.1 messages