Class MediaFormatImpl<T extends javax.media.Format>

    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected MediaFormatImpl​(T format)
      Initializes a new MediaFormatImpl instance which is to provide an implementation of MediaFormat for a specific Format.
      protected MediaFormatImpl​(T format, Map<String,​String> formatParameters, Map<String,​String> advancedAttributes)
      Initializes a new MediaFormatImpl instance which is to provide an implementation of MediaFormat for a specific Format and which is to have a specific set of codec-specific parameters.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean advancedAttributesAreEqual​(Map<String,​String> adv, Map<String,​String> adv2)
      Determines whether a specific set of advanced attributes is equal to another set of advanced attributes in the sense that they define an equal number of parameters and assign them equal values.
      static MediaFormat createInstance​(javax.media.Format format)
      Creates a new MediaFormat instance for a specific JMF Format.
      static MediaFormatImpl<? extends javax.media.Format> createInstance​(javax.media.Format format, double clockRate, Map<String,​String> formatParameters, Map<String,​String> advancedAttributess)
      Creates a new MediaFormat instance for a specific JMF Format and assigns it specific clock rate and set of format-specific parameters.
      boolean equals​(Object mediaFormat)
      Implements MediaFormat#equals(Object) and actually compares the encapsulated JMF Format instances.
      static boolean formatParametersAreEqual​(String encoding, Map<String,​String> fmtps1, Map<String,​String> fmtps2)
      Determines whether a specific set of format parameters is equal to another set of format parameters in the sense that they define an equal number of parameters and assign them equal values.
      protected boolean formatParametersAreEqual​(Map<String,​String> fmtps1, Map<String,​String> fmtps2)
      Determines whether a specific set of format parameters is equal to another set of format parameters in the sense that they define an equal number of parameters and assign them equal values.
      boolean formatParametersMatch​(Map<String,​String> fmtps)
      Determines whether the format parameters of this MediaFormat match a specific set of format parameters.
      Map<String,​String> getAdditionalCodecSettings()
      Returns additional codec settings.
      Map<String,​String> getAdvancedAttributes()
      Implements MediaFormat#getAdvancedAttributes().
      String getClockRateString()
      Returns a String representation of the clock rate associated with this MediaFormat making sure that the value appears as an integer (i.e.
      String getEncoding()
      Implements MediaFormat#getEncoding() and returns the encoding of the JMF Format that we are encapsulating here but it is the RFC-known encoding and not the internal JMF encoding.
      T getFormat()
      Returns the JMF Format instance that we are wrapping here.
      Map<String,​String> getFormatParameters()
      Implements MediaFormat#getFormatParameters().
      String getJMFEncoding()
      Gets the encoding of the JMF Format represented by this instance as it is known to JMF (in contrast to its RFC name).
      String getRealUsedClockRateString()
      Returns a String representation of the real used clock rate associated with this MediaFormat making sure that the value appears as an integer (i.e.
      byte getRTPPayloadType()
      Gets the RTP payload type (number) of this MediaFormat as it is known in RFC 3551 "RTP Profile for Audio and Video Conferences with Minimal Control".
      int hashCode()
      Overrides Object#hashCode() because Object#equals(Object) is overridden.
      boolean matches​(MediaFormat format)
      Determines whether this MediaFormat matches properties of a specific MediaFormat, such as mediaType, encoding, clockRate and channels for MediaFormats with mediaType equal to MediaType.AUDIO.
      boolean matches​(org.jitsi.utils.MediaType mediaType, String encoding, double clockRate, int channels, Map<String,​String> fmtps)
      Determines whether this MediaFormat has specific values for its properties mediaType, encoding, clockRate and channels for MediaFormats with mediaType equal to MediaType.AUDIO.
      void setAdditionalCodecSettings​(Map<String,​String> settings)
      Sets additional codec settings.
      String toString()
      Returns a String representation of this MediaFormat containing, among other things, its encoding and clockrate values.
    • Field Detail

      • CLOCK_RATE_PNAME

        public static final String CLOCK_RATE_PNAME
        The name of the clockRate property of MediaFormatImpl.
        See Also:
        Constant Field Values
      • ENCODING_PNAME

        public static final String ENCODING_PNAME
        The name of the encoding property of MediaFormatImpl.
        See Also:
        Constant Field Values
      • FORMAT_PARAMETERS_PNAME

        public static final String FORMAT_PARAMETERS_PNAME
        The name of the formatParameters property of MediaFormatImpl.
        See Also:
        Constant Field Values
      • format

        protected final T extends javax.media.Format format
        The JMF Format this instance wraps and provides an implementation of MediaFormat for.
    • Constructor Detail

      • MediaFormatImpl

        protected MediaFormatImpl​(T format)
        Initializes a new MediaFormatImpl instance which is to provide an implementation of MediaFormat for a specific Format.
        Parameters:
        format - the JMF Format the new instance is to provide an implementation of MediaFormat for
      • MediaFormatImpl

        protected MediaFormatImpl​(T format,
                                  Map<String,​String> formatParameters,
                                  Map<String,​String> advancedAttributes)
        Initializes a new MediaFormatImpl instance which is to provide an implementation of MediaFormat for a specific Format and which is to have a specific set of codec-specific parameters.
        Parameters:
        format - the JMF Format the new instance is to provide an implementation of MediaFormat for
        formatParameters - any codec-specific parameters that have been received via SIP/SDP or XMPP/Jingle
        advancedAttributes - any parameters that have been received via SIP/SDP or XMPP/Jingle
    • Method Detail

      • createInstance

        public static MediaFormat createInstance​(javax.media.Format format)
        Creates a new MediaFormat instance for a specific JMF Format.
        Parameters:
        format - the JMF Format the new instance is to provide an implementation of MediaFormat for
        Returns:
        a new MediaFormat instance for the specified JMF Format
      • createInstance

        public static MediaFormatImpl<? extends javax.media.Format> createInstance​(javax.media.Format format,
                                                                                   double clockRate,
                                                                                   Map<String,​String> formatParameters,
                                                                                   Map<String,​String> advancedAttributess)
        Creates a new MediaFormat instance for a specific JMF Format and assigns it specific clock rate and set of format-specific parameters.
        Parameters:
        format - the JMF Format the new instance is to provide an implementation of MediaFormat for
        clockRate - the clock rate of the new instance
        formatParameters - the set of format-specific parameters of the new instance
        advancedAttributess - advanced attributes of the new instance
        Returns:
        a new MediaFormat instance for the specified JMF Format and with the specified clock rate and set of format-specific parameters
      • formatParametersAreEqual

        public static boolean formatParametersAreEqual​(String encoding,
                                                       Map<String,​String> fmtps1,
                                                       Map<String,​String> fmtps2)
        Determines whether a specific set of format parameters is equal to another set of format parameters in the sense that they define an equal number of parameters and assign them equal values. Since the values are Strings, presumes that a value of null is equal to the empty String.

        The two Map instances of format parameters to be checked for equality are presumed to be modifiable in the sense that if the lack of a format parameter in a given Map is equivalent to it having a specific value, an association of the format parameter to the value in question may be added to or removed from the respective Map instance for the purposes of determining equality.

        Parameters:
        encoding - the encoding (name) related to the two sets of format parameters to be tested for equality
        fmtps1 - the first set of format parameters to be tested for equality
        fmtps2 - the second set of format parameters to be tested for equality
        Returns:
        true if the specified sets of format parameters are equal; false, otherwise
      • advancedAttributesAreEqual

        public boolean advancedAttributesAreEqual​(Map<String,​String> adv,
                                                  Map<String,​String> adv2)
        Determines whether a specific set of advanced attributes is equal to another set of advanced attributes in the sense that they define an equal number of parameters and assign them equal values. Since the values are Strings, presumes that a value of null is equal to the empty String.

        Parameters:
        adv - the first set of advanced attributes to be tested for equality
        adv2 - the second set of advanced attributes to be tested for equality
        Returns:
        true if the specified sets of advanced attributes equal; false, otherwise
      • equals

        public boolean equals​(Object mediaFormat)
        Implements MediaFormat#equals(Object) and actually compares the encapsulated JMF Format instances.
        Specified by:
        equals in interface MediaFormat
        Overrides:
        equals in class Object
        Parameters:
        mediaFormat - the object that we'd like to compare this one to. 8*
        Returns:
        true if the JMF Format instances encapsulated by this class are equal and false otherwise.
      • formatParametersAreEqual

        protected boolean formatParametersAreEqual​(Map<String,​String> fmtps1,
                                                   Map<String,​String> fmtps2)
        Determines whether a specific set of format parameters is equal to another set of format parameters in the sense that they define an equal number of parameters and assign them equal values. Since the values are Strings, presumes that a value of null is equal to the empty String.

        The two Map instances of format parameters to be checked for equality are presumed to be modifiable in the sense that if the lack of a format parameter in a given Map is equivalent to it having a specific value, an association of the format parameter to the value in question may be added to or removed from the respective Map instance for the purposes of determining equality.

        Parameters:
        fmtps1 - the first set of format parameters to be tested for equality
        fmtps2 - the second set of format parameters to be tested for equality
        Returns:
        true if the specified sets of format parameters are equal; false, otherwise
      • formatParametersMatch

        public boolean formatParametersMatch​(Map<String,​String> fmtps)
        Determines whether the format parameters of this MediaFormat match a specific set of format parameters.

        The default implementation of MediaFormatImpl always returns true because format parameters in general do not cause the distinction of payload types.

        Specified by:
        formatParametersMatch in interface MediaFormat
        Parameters:
        fmtps - the set of format parameters to match to the format parameters of this MediaFormat
        Returns:
        true if this MediaFormat considers fmtps matching its format parameters; otherwise, false
      • getAdvancedAttributes

        public Map<String,​String> getAdvancedAttributes()
        Implements MediaFormat#getAdvancedAttributes(). Returns a copy of the attribute properties of this instance. Modifications to the returned Map do no affect the format properties of this instance.
        Specified by:
        getAdvancedAttributes in interface MediaFormat
        Returns:
        a copy of the attribute properties of this instance. Modifications to the returned Map do no affect the format properties of this instance.
      • getClockRateString

        public String getClockRateString()
        Returns a String representation of the clock rate associated with this MediaFormat making sure that the value appears as an integer (i.e. its long-casted value is equal to its original one) unless it is actually a non integer.
        Specified by:
        getClockRateString in interface MediaFormat
        Returns:
        a String representation of the clock rate associated with this MediaFormat.
      • getEncoding

        public String getEncoding()
        Implements MediaFormat#getEncoding() and returns the encoding of the JMF Format that we are encapsulating here but it is the RFC-known encoding and not the internal JMF encoding.
        Specified by:
        getEncoding in interface MediaFormat
        Returns:
        the RFC-known encoding of the JMF Format that we are encapsulating
      • getFormat

        public T getFormat()
        Returns the JMF Format instance that we are wrapping here.
        Returns:
        a reference to that JMF Format instance that this class is wrapping.
      • getFormatParameters

        public Map<String,​String> getFormatParameters()
        Implements MediaFormat#getFormatParameters(). Returns a copy of the format properties of this instance. Modifications to the returned Map do no affect the format properties of this instance.
        Specified by:
        getFormatParameters in interface MediaFormat
        Returns:
        a copy of the format properties of this instance. Modifications to the returned Map do no affect the format properties of this instance.
      • getJMFEncoding

        public String getJMFEncoding()
        Gets the encoding of the JMF Format represented by this instance as it is known to JMF (in contrast to its RFC name).
        Returns:
        the encoding of the JMF Format represented by this instance as it is known to JMF (in contrast to its RFC name)
      • getRealUsedClockRateString

        public String getRealUsedClockRateString()
        Returns a String representation of the real used clock rate associated with this MediaFormat making sure that the value appears as an integer (i.e. contains no decimal point) unless it is actually a non integer. This function corrects the problem of the G.722 codec which advertises its clock rate to be 8 kHz while 16 kHz is really used to encode the stream (that's an error noted in the respective RFC and kept for the sake of compatibility.).
        Specified by:
        getRealUsedClockRateString in interface MediaFormat
        Returns:
        a String representation of the real used clock rate associated with this MediaFormat.
      • getRTPPayloadType

        public byte getRTPPayloadType()
        Gets the RTP payload type (number) of this MediaFormat as it is known in RFC 3551 "RTP Profile for Audio and Video Conferences with Minimal Control".
        Specified by:
        getRTPPayloadType in interface MediaFormat
        Returns:
        the RTP payload type of this MediaFormat if it is known in RFC 3551 "RTP Profile for Audio and Video Conferences with Minimal Control"; otherwise, MediaFormat.RTP_PAYLOAD_TYPE_UNKNOWN
        See Also:
        MediaFormat.getRTPPayloadType()
      • hashCode

        public int hashCode()
        Overrides Object#hashCode() because Object#equals(Object) is overridden.
        Overrides:
        hashCode in class Object
        Returns:
        a hash code value for this MediaFormat.
      • matches

        public boolean matches​(MediaFormat format)
        Determines whether this MediaFormat matches properties of a specific MediaFormat, such as mediaType, encoding, clockRate and channels for MediaFormats with mediaType equal to MediaType.AUDIO.
        Specified by:
        matches in interface MediaFormat
        Parameters:
        format - the MediaFormat whose properties we'd like to examine and compare with ours.
        Returns:
        true if the specified format has specific values for its properties mediaType, encoding, clockRate and channels; otherwise, false
      • matches

        public boolean matches​(org.jitsi.utils.MediaType mediaType,
                               String encoding,
                               double clockRate,
                               int channels,
                               Map<String,​String> fmtps)
        Determines whether this MediaFormat has specific values for its properties mediaType, encoding, clockRate and channels for MediaFormats with mediaType equal to MediaType.AUDIO.
        Specified by:
        matches in interface MediaFormat
        Parameters:
        mediaType - the type we expect MediaFormat to have
        encoding - the encoding we are looking for.
        clockRate - the clock rate that we'd like the format to have.
        channels - the number of channels that expect to find in this format
        fmtps - the format parameters expected to match these of the specified format
        Returns:
        true if the specified format has specific values for its properties mediaType, encoding, clockRate and channels; otherwise, false
      • setAdditionalCodecSettings

        public void setAdditionalCodecSettings​(Map<String,​String> settings)
        Sets additional codec settings.
        Specified by:
        setAdditionalCodecSettings in interface MediaFormat
        Parameters:
        settings - additional settings represented by a map.
      • toString

        public String toString()
        Returns a String representation of this MediaFormat containing, among other things, its encoding and clockrate values.
        Specified by:
        toString in interface MediaFormat
        Overrides:
        toString in class Object
        Returns:
        a String representation of this MediaFormat.