The UMSNegotiatorSink and UMSNegotiatorSource interfaces are an Ultimedia Services Version 2 feature and do not apply to Ultimedia Services Version 1.2.1.
In object-oriented multimedia, many of the categories of improvement tie directly into what the format of the media is as it moves from one object to another. For example, when one of the objects is implemented in hardware and the other in software, then the format of the data as it is passed between them represents how much of the total job is assisted by specialized hardware. This kind of intelligent flexibility is important to proper use of the hardware that is present.
Further, it is the nature of data streams that they facilitate certain functionality. For example, one can do a better job of scaling an image when it is YUV or RGB form, rather than in a color-indexed form.
For these reasons, it is useful for objects to support a variety of data formats. The selection of format in a particular configuration of objects can be important to performance and functionality.
Classes that receive media from other objects can, in addition to their other methods, inherit methods from the UMSNegotiatorSink interface. This provides a consistent view of the object as a receiver of media. In a similar way, classes that deliver media to other objects can inherit from the UMSNegotiatorSource interface. This provides a consistent view of that object as a provider of media. The methods in these interfaces are designed to facilitate the selection and communication of the specific form that the media takes.
The UMSNegotiatorSink and UMSNegotiatorSource classes are both abstract base classes meaning that other classes may be derived from them, but no object whould ever be direcly instantiated (created) from the UMSNegotiatorSink or UMSNegotiatorSource classes. By inheriting from a standard interface, the specific class of the object does not have to be known to invoke the methods in the standard interface. Therefore, software using an object that has inherited from UMSNegotiatorSink or from UMSNegotiatorSource does not need to know the other interfaces in the object to establish the format of the data.
The current mechanism for identifying a data format is to relate it to an ASCII string. This allows for enhancing the set of formats with a reduced risk of naming collision when different parties supply objects. The mechanism for determining what data formats can be employed in a given configuration is to compare two lists of strings to see what matches exist.
Objects that inherit from UMSNegotiatorSource include:
The object that inherits from UMSNegotiatorSink is ImageWindow.
Selection of the specific object of a class of objects can also be important in coordinating the data formats and functionalities. Further detail on mechanisms that are used for this can be found in Programming with MetaClass Objects.
To learn more about using UMSNegotiatorSource or UMSNegotiatorSink see: