blob: 9f52cf25d05df786d0cedee815d6cbc155879344 [file] [log] [blame]
Sami Kalliomäkie2410e92017-06-02 14:46:12 +02001/*
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
11package org.webrtc;
12
Anders Carlsson1e1dd772017-11-16 15:44:14 +010013import java.util.Arrays;
14import java.util.Locale;
Sami Kalliomäkie2410e92017-06-02 14:46:12 +020015import java.util.Map;
16
17/**
18 * Represent a video codec as encoded in SDP.
19 */
20public class VideoCodecInfo {
sakalc36daec2017-09-11 06:53:27 -070021 // Keys for H264 VideoCodecInfo properties.
22 public static final String H264_FMTP_PROFILE_LEVEL_ID = "profile-level-id";
23 public static final String H264_FMTP_LEVEL_ASYMMETRY_ALLOWED = "level-asymmetry-allowed";
24 public static final String H264_FMTP_PACKETIZATION_MODE = "packetization-mode";
25
Sami Kalliomäki828cf242017-10-30 13:49:31 +010026 public static final String H264_PROFILE_CONSTRAINED_BASELINE = "42e0";
sakalc36daec2017-09-11 06:53:27 -070027 public static final String H264_PROFILE_CONSTRAINED_HIGH = "640c";
28 public static final String H264_LEVEL_3_1 = "1f"; // 31 in hex.
29 public static final String H264_CONSTRAINED_HIGH_3_1 =
30 H264_PROFILE_CONSTRAINED_HIGH + H264_LEVEL_3_1;
31 public static final String H264_CONSTRAINED_BASELINE_3_1 =
32 H264_PROFILE_CONSTRAINED_BASELINE + H264_LEVEL_3_1;
33
Sami Kalliomäkie2410e92017-06-02 14:46:12 +020034 public final String name;
35 public final Map<String, String> params;
Anders Carlssondc1b9f12017-11-10 13:15:04 +010036 @Deprecated public final int payload;
Sami Kalliomäkie2410e92017-06-02 14:46:12 +020037
Anders Carlssondc1b9f12017-11-10 13:15:04 +010038 public VideoCodecInfo(String name, Map<String, String> params) {
39 this.payload = 0;
40 this.name = name;
41 this.params = params;
42 }
43
44 @Deprecated
Sami Kalliomäkie2410e92017-06-02 14:46:12 +020045 public VideoCodecInfo(int payload, String name, Map<String, String> params) {
46 this.payload = payload;
47 this.name = name;
48 this.params = params;
49 }
Anders Carlsson1e1dd772017-11-16 15:44:14 +010050
51 @Override
52 public boolean equals(Object obj) {
53 if (obj == null)
54 return false;
55 if (obj == this)
56 return true;
57 if (!(obj instanceof VideoCodecInfo))
58 return false;
59
60 VideoCodecInfo otherInfo = (VideoCodecInfo) obj;
61 return name.equalsIgnoreCase(otherInfo.name) && params.equals(otherInfo.params);
62 }
63
64 @Override
65 public int hashCode() {
66 Object[] values = {name.toUpperCase(Locale.ROOT), params};
67 return Arrays.hashCode(values);
68 }
Sami Kalliomäkie2410e92017-06-02 14:46:12 +020069}