Microsoft Unified Communications Managed API 2.0 Core SDK provides built-in support for two media types: audioand message. For many developers, no other media type is necessary. For developers whose applications require additional media types, the UCMA 2.0 Core SDK platform can be extended to work with the new, custom media types. Because these new media types are not present in the UCMA 2.0 Core SDK platform, they are considered platform extensions.

In the UCMA 2.0 Core SDK platform, the process where a factory class is used to create a variety of objects that share basic functionality, but have additional functionality that is tailored to specific media type constraints, is based on two concepts: call factoryand media provider factory. The call factory and media provider factory concepts are represented in UCMA 2.0 Core SDK by the CallFactoryand MediaProviderFactoryabstract base classes, both of which inherit from the MediaBasedFactoryabstract class. The UCMA 2.0 Core SDK platform uses subclasses of these types to create instances of the default call types, AudioVideoCalland InstantMessagingCall, as well as (internal) media provider instances for these call types. AudioVideoCalland InstantMessagingCallare classes that inherit from Call, an abstract class.

Third parties who intend to provide support for additional media types can do so by implementing Call, MediaProvider, and MediaFlowsubclasses tailored to the media type they want to support, and then by implementing CallFactoryand MediaProviderFactorysubclasses that create instances of the Calland MediaProvidersubclasses that match their new media type.

The following illustration shows the relationships between the abstract classes provided in UCMA 2.0 Core SDK and the classes that must be implemented by developers who wish to extend the UCMA 2.0 Core SDK platform to support new media types. The subclasses for the MediaBasedFactory, CallFactory, and MediaProviderFactoryabstract classes appear in the second illustration.

Platform extension architecture

The topics in this section discuss minimum requirements for implementing subclasses of the abstract classes appearing in the previous illustration.