From d8bbc7858622b6d9c278469aab701ca0b609cddf Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 15 May 2024 05:35:49 +0200 Subject: Merging upstream version 126.0. Signed-off-by: Daniel Baumann --- .../api/video_codecs/h265_profile_tier_level.h | 218 ++++++++++----------- 1 file changed, 109 insertions(+), 109 deletions(-) (limited to 'third_party/libwebrtc/api/video_codecs/h265_profile_tier_level.h') diff --git a/third_party/libwebrtc/api/video_codecs/h265_profile_tier_level.h b/third_party/libwebrtc/api/video_codecs/h265_profile_tier_level.h index 3056d2b623..efbdf287ed 100644 --- a/third_party/libwebrtc/api/video_codecs/h265_profile_tier_level.h +++ b/third_party/libwebrtc/api/video_codecs/h265_profile_tier_level.h @@ -1,109 +1,109 @@ -/* - * Copyright (c) 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. - */ - -#ifndef API_VIDEO_CODECS_H265_PROFILE_TIER_LEVEL_H_ -#define API_VIDEO_CODECS_H265_PROFILE_TIER_LEVEL_H_ - -#include - -#include "absl/types/optional.h" -#include "api/video_codecs/sdp_video_format.h" -#include "rtc_base/system/rtc_export.h" - -namespace webrtc { - -// Profiles can be found at: -// https://www.itu.int/rec/T-REC-H.265 -// The enum values match the number specified in the SDP. -enum class H265Profile { - kProfileMain = 1, - kProfileMain10 = 2, - kProfileMainStill = 3, - kProfileRangeExtensions = 4, - kProfileHighThroughput = 5, - kProfileMultiviewMain = 6, - kProfileScalableMain = 7, - kProfile3dMain = 8, - kProfileScreenContentCoding = 9, - kProfileScalableRangeExtensions = 10, - kProfileHighThroughputScreenContentCoding = 11, -}; - -// Tiers can be found at https://www.itu.int/rec/T-REC-H.265 -enum class H265Tier { - kTier0, - kTier1, -}; - -// All values are equal to 30 times the level number. -enum class H265Level { - kLevel1 = 30, - kLevel2 = 60, - kLevel2_1 = 63, - kLevel3 = 90, - kLevel3_1 = 93, - kLevel4 = 120, - kLevel4_1 = 123, - kLevel5 = 150, - kLevel5_1 = 153, - kLevel5_2 = 156, - kLevel6 = 180, - kLevel6_1 = 183, - kLevel6_2 = 186, -}; - -struct H265ProfileTierLevel { - constexpr H265ProfileTierLevel(H265Profile profile, - H265Tier tier, - H265Level level) - : profile(profile), tier(tier), level(level) {} - H265Profile profile; - H265Tier tier; - H265Level level; -}; - -// Helper function to convert H265Profile to std::string. -RTC_EXPORT std::string H265ProfileToString(H265Profile profile); - -// Helper function to convert H265Tier to std::string. -RTC_EXPORT std::string H265TierToString(H265Tier tier); - -// Helper function to convert H265Level to std::string. -RTC_EXPORT std::string H265LevelToString(H265Level level); - -// Helper function to get H265Profile from profile string. -RTC_EXPORT absl::optional StringToH265Profile( - const std::string& profile); - -// Helper function to get H265Tier from tier string. -RTC_EXPORT absl::optional StringToH265Tier(const std::string& tier); - -// Helper function to get H265Level from level string. -RTC_EXPORT absl::optional StringToH265Level( - const std::string& level); - -// Parses an SDP key-value map of format parameters to retrive an H265 -// profile/tier/level. Returns an H265ProfileTierlevel by setting its -// members. profile defaults to `kProfileMain` if no profile-id is specified. -// tier defaults to "kTier0" if no tier-flag is specified. -// level defaults to "kLevel3_1" if no level-id is specified. -// Returns empty value if any of the profile/tier/level key is present but -// contains an invalid value. -RTC_EXPORT absl::optional ParseSdpForH265ProfileTierLevel( - const SdpVideoFormat::Parameters& params); - -// Returns true if the parameters have the same H265 profile or neither contains -// an H265 profile, otherwise false. -bool H265IsSameProfileTierLevel(const SdpVideoFormat::Parameters& params1, - const SdpVideoFormat::Parameters& params2); - -} // namespace webrtc - -#endif // API_VIDEO_CODECS_H265_PROFILE_TIER_LEVEL_H_ +/* + * Copyright (c) 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. + */ + +#ifndef API_VIDEO_CODECS_H265_PROFILE_TIER_LEVEL_H_ +#define API_VIDEO_CODECS_H265_PROFILE_TIER_LEVEL_H_ + +#include + +#include "absl/types/optional.h" +#include "api/video_codecs/sdp_video_format.h" +#include "rtc_base/system/rtc_export.h" + +namespace webrtc { + +// Profiles can be found at: +// https://www.itu.int/rec/T-REC-H.265 +// The enum values match the number specified in the SDP. +enum class H265Profile { + kProfileMain = 1, + kProfileMain10 = 2, + kProfileMainStill = 3, + kProfileRangeExtensions = 4, + kProfileHighThroughput = 5, + kProfileMultiviewMain = 6, + kProfileScalableMain = 7, + kProfile3dMain = 8, + kProfileScreenContentCoding = 9, + kProfileScalableRangeExtensions = 10, + kProfileHighThroughputScreenContentCoding = 11, +}; + +// Tiers can be found at https://www.itu.int/rec/T-REC-H.265 +enum class H265Tier { + kTier0, + kTier1, +}; + +// All values are equal to 30 times the level number. +enum class H265Level { + kLevel1 = 30, + kLevel2 = 60, + kLevel2_1 = 63, + kLevel3 = 90, + kLevel3_1 = 93, + kLevel4 = 120, + kLevel4_1 = 123, + kLevel5 = 150, + kLevel5_1 = 153, + kLevel5_2 = 156, + kLevel6 = 180, + kLevel6_1 = 183, + kLevel6_2 = 186, +}; + +struct H265ProfileTierLevel { + constexpr H265ProfileTierLevel(H265Profile profile, + H265Tier tier, + H265Level level) + : profile(profile), tier(tier), level(level) {} + H265Profile profile; + H265Tier tier; + H265Level level; +}; + +// Helper function to convert H265Profile to std::string. +RTC_EXPORT std::string H265ProfileToString(H265Profile profile); + +// Helper function to convert H265Tier to std::string. +RTC_EXPORT std::string H265TierToString(H265Tier tier); + +// Helper function to convert H265Level to std::string. +RTC_EXPORT std::string H265LevelToString(H265Level level); + +// Helper function to get H265Profile from profile string. +RTC_EXPORT absl::optional StringToH265Profile( + const std::string& profile); + +// Helper function to get H265Tier from tier string. +RTC_EXPORT absl::optional StringToH265Tier(const std::string& tier); + +// Helper function to get H265Level from level string. +RTC_EXPORT absl::optional StringToH265Level( + const std::string& level); + +// Parses an SDP key-value map of format parameters to retrive an H265 +// profile/tier/level. Returns an H265ProfileTierlevel by setting its +// members. profile defaults to `kProfileMain` if no profile-id is specified. +// tier defaults to "kTier0" if no tier-flag is specified. +// level defaults to "kLevel3_1" if no level-id is specified. +// Returns empty value if any of the profile/tier/level key is present but +// contains an invalid value. +RTC_EXPORT absl::optional ParseSdpForH265ProfileTierLevel( + const CodecParameterMap& params); + +// Returns true if the parameters have the same H265 profile or neither contains +// an H265 profile, otherwise false. +RTC_EXPORT bool H265IsSameProfileTierLevel(const CodecParameterMap& params1, + const CodecParameterMap& params2); + +} // namespace webrtc + +#endif // API_VIDEO_CODECS_H265_PROFILE_TIER_LEVEL_H_ -- cgit v1.2.3