|  | /* | 
|  | *  Copyright (c) 2021 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. | 
|  | */ | 
|  |  | 
|  | #ifndef API_VIDEO_CODECS_VP9_PROFILE_H_ | 
|  | #define API_VIDEO_CODECS_VP9_PROFILE_H_ | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | #include "absl/types/optional.h" | 
|  | #include "api/video_codecs/sdp_video_format.h" | 
|  | #include "rtc_base/system/rtc_export.h" | 
|  |  | 
|  | namespace webrtc { | 
|  |  | 
|  | // Profile information for VP9 video. | 
|  | extern RTC_EXPORT const char kVP9FmtpProfileId[]; | 
|  |  | 
|  | enum class VP9Profile { | 
|  | kProfile0, | 
|  | kProfile1, | 
|  | kProfile2, | 
|  | kProfile3, | 
|  | }; | 
|  |  | 
|  | // Helper functions to convert VP9Profile to std::string. Returns "0" by | 
|  | // default. | 
|  | RTC_EXPORT std::string VP9ProfileToString(VP9Profile profile); | 
|  |  | 
|  | // Helper functions to convert std::string to VP9Profile. Returns null if given | 
|  | // an invalid profile string. | 
|  | absl::optional<VP9Profile> StringToVP9Profile(const std::string& str); | 
|  |  | 
|  | // Parse profile that is represented as a string of single digit contained in an | 
|  | // SDP key-value map. A default profile(kProfile0) will be returned if the | 
|  | // profile key is missing. Nothing will be returned if the key is present but | 
|  | // the string is invalid. | 
|  | RTC_EXPORT absl::optional<VP9Profile> ParseSdpForVP9Profile( | 
|  | const SdpVideoFormat::Parameters& params); | 
|  |  | 
|  | // Returns true if the parameters have the same VP9 profile, or neither contains | 
|  | // VP9 profile. | 
|  | bool VP9IsSameProfile(const SdpVideoFormat::Parameters& params1, | 
|  | const SdpVideoFormat::Parameters& params2); | 
|  |  | 
|  | }  // namespace webrtc | 
|  |  | 
|  | #endif  // API_VIDEO_CODECS_VP9_PROFILE_H_ |