• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *  Copyright 2017 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 package org.webrtc;
12 
13 import androidx.annotation.Nullable;
14 import java.util.Arrays;
15 import java.util.Locale;
16 import java.util.Map;
17 
18 /**
19  * Represent a video codec as encoded in SDP.
20  */
21 public class VideoCodecInfo {
22   // Keys for H264 VideoCodecInfo properties.
23   public static final String H264_FMTP_PROFILE_LEVEL_ID = "profile-level-id";
24   public static final String H264_FMTP_LEVEL_ASYMMETRY_ALLOWED = "level-asymmetry-allowed";
25   public static final String H264_FMTP_PACKETIZATION_MODE = "packetization-mode";
26 
27   public static final String H264_PROFILE_CONSTRAINED_BASELINE = "42e0";
28   public static final String H264_PROFILE_CONSTRAINED_HIGH = "640c";
29   public static final String H264_LEVEL_3_1 = "1f"; // 31 in hex.
30   public static final String H264_CONSTRAINED_HIGH_3_1 =
31       H264_PROFILE_CONSTRAINED_HIGH + H264_LEVEL_3_1;
32   public static final String H264_CONSTRAINED_BASELINE_3_1 =
33       H264_PROFILE_CONSTRAINED_BASELINE + H264_LEVEL_3_1;
34 
35   public final String name;
36   public final Map<String, String> params;
37   @Deprecated public final int payload;
38 
39   @CalledByNative
VideoCodecInfo(String name, Map<String, String> params)40   public VideoCodecInfo(String name, Map<String, String> params) {
41     this.payload = 0;
42     this.name = name;
43     this.params = params;
44   }
45 
46   @Deprecated
VideoCodecInfo(int payload, String name, Map<String, String> params)47   public VideoCodecInfo(int payload, String name, Map<String, String> params) {
48     this.payload = payload;
49     this.name = name;
50     this.params = params;
51   }
52 
53   @Override
equals(@ullable Object obj)54   public boolean equals(@Nullable Object obj) {
55     if (obj == null)
56       return false;
57     if (obj == this)
58       return true;
59     if (!(obj instanceof VideoCodecInfo))
60       return false;
61 
62     VideoCodecInfo otherInfo = (VideoCodecInfo) obj;
63     return name.equalsIgnoreCase(otherInfo.name) && params.equals(otherInfo.params);
64   }
65 
66   @Override
hashCode()67   public int hashCode() {
68     Object[] values = {name.toUpperCase(Locale.ROOT), params};
69     return Arrays.hashCode(values);
70   }
71 
72   @Override
toString()73   public String toString() {
74     return "VideoCodec{" + name + " " + params + "}";
75   }
76 
77   @CalledByNative
getName()78   String getName() {
79     return name;
80   }
81 
82   @CalledByNative
getParams()83   Map getParams() {
84     return params;
85   }
86 }
87