/* * Copyright 2023 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ package org.webrtc; import androidx.annotation.Nullable; import java.util.List; import java.util.Map; import org.webrtc.MediaStreamTrack; public class RtpCapabilities { public static class CodecCapability { public int preferredPayloadType; // Name used to identify the codec. Equivalent to MIME subtype. public String name; // The media type of this codec. Equivalent to MIME top-level type. public MediaStreamTrack.MediaType kind; // Clock rate in Hertz. public Integer clockRate; // The number of audio channels used. Set to null for video codecs. public Integer numChannels; // The "format specific parameters" field from the "a=fmtp" line in the SDP public Map parameters; // The MIME type of the codec. This is a convenience field. public String mimeType; public CodecCapability() {} @CalledByNative("CodecCapability") CodecCapability(int preferredPayloadType, String name, MediaStreamTrack.MediaType kind, Integer clockRate, Integer numChannels, String mimeType, Map parameters) { this.preferredPayloadType = preferredPayloadType; this.name = name; this.kind = kind; this.clockRate = clockRate; this.numChannels = numChannels; this.parameters = parameters; this.mimeType = mimeType; } @CalledByNative("CodecCapability") int getPreferredPayloadType() { return preferredPayloadType; } @CalledByNative("CodecCapability") String getName() { return name; } @CalledByNative("CodecCapability") MediaStreamTrack.MediaType getKind() { return kind; } @CalledByNative("CodecCapability") Integer getClockRate() { return clockRate; } @CalledByNative("CodecCapability") Integer getNumChannels() { return numChannels; } @CalledByNative("CodecCapability") Map getParameters() { return parameters; } } public static class HeaderExtensionCapability { private final String uri; private final int preferredId; private final boolean preferredEncrypted; @CalledByNative("HeaderExtensionCapability") HeaderExtensionCapability(String uri, int preferredId, boolean preferredEncrypted) { this.uri = uri; this.preferredId = preferredId; this.preferredEncrypted = preferredEncrypted; } @CalledByNative("HeaderExtensionCapability") public String getUri() { return uri; } @CalledByNative("HeaderExtensionCapability") public int getPreferredId() { return preferredId; } @CalledByNative("HeaderExtensionCapability") public boolean getPreferredEncrypted() { return preferredEncrypted; } } public List codecs; public List headerExtensions; @CalledByNative RtpCapabilities(List codecs, List headerExtensions) { this.headerExtensions = headerExtensions; this.codecs = codecs; } @CalledByNative public List getHeaderExtensions() { return headerExtensions; } @CalledByNative List getCodecs() { return codecs; } }