The AudioVideoFlow, AudioControl, and AudioChannelclasses can be thought of as having the logical relationship shown in the following illustration. The Audioproperty on an AudioVideoFlowinstance provides access to the AudioControlinstance, and the GetChannelsmethod on the AudioControlinstance returns a read-only IDictionarythat can be used to find an AudioChannelinstance by its label.

Note:
In Unified Communications Managed API 2.0 Core SDK an AudioControlinstance must have exactly one AudioChannelinstance.


Logical AudioVideoFlow structure

The preceding illustration also shows several of the properties on the three classes. Each property on an outer class affects not only its own class, but can affect an inner class. For example, the EncryptionPolicyindicates whether channel encryption is not supported, supported, or required, and therefore affects the value of the Encryptedproperty on the AudioChannelinstance. The Encryptedvalue can be trueif channel encryption is supported or required, but must be falseif channel encryption is not supported.

Because the AudioVideoFlowclass has no public constructors, it is not possible to directly create an instance of this class. Instead, an application must use the AudioVideoFlowinstance created when an AudioVideoCallinstance is created (and accessible through the Flowproperty on the AudioVideoCallinstance). If an application intends to change the settings on an AudioVideoFlowinstance, it must create an AudioVideoFlowTemplateinstance to do so. For more information, see Using an AudioVideoFlowTemplate.