From 7b3a568f6ae426d1017f886334013b06b9f17891 Mon Sep 17 00:00:00 2001 From: Emircan Uysaler Date: Sun, 25 Nov 2018 22:45:22 -0500 Subject: [PATCH] Reland 2: Add VP9 Profile 2 to default profiles This is a reland of 4c0cc5bc5fa027b9392ff2886e731bea3aac7602 I added more Chrome checks for munging profiles in the below patch that will allow us to land this without regressions. https://chromium-review.googlesource.com/c/chromium/src/+/1366898 Original change's description: > Reland Profile 2 to default profiles > > This is a reland after chrome browser tests are updated. > > Bug: webrtc:9376 > Change-Id: I818bf5d447da7901ffe49f2c452decb89196e829 > TBR: niklas.enbom@webrtc.org > Reviewed-on: https://webrtc-review.googlesource.com/c/112060 > Reviewed-by: Emircan Uysaler > Commit-Queue: Emircan Uysaler > Cr-Commit-Position: refs/heads/master@{#25778} Bug: webrtc:9376 Change-Id: I8998537816a773961e519535c6afdde3801b5918 TBR: niklas.enbom@webrtc.org Reviewed-on: https://webrtc-review.googlesource.com/c/113980 Commit-Queue: Emircan Uysaler Reviewed-by: Emircan Uysaler Cr-Commit-Position: refs/heads/master@{#25977} --- modules/video_coding/codecs/vp9/vp9.cc | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/video_coding/codecs/vp9/vp9.cc b/modules/video_coding/codecs/vp9/vp9.cc index 59cc66707e..22a0888120 100644 --- a/modules/video_coding/codecs/vp9/vp9.cc +++ b/modules/video_coding/codecs/vp9/vp9.cc @@ -14,15 +14,30 @@ #include "api/video_codecs/sdp_video_format.h" #include "modules/video_coding/codecs/vp9/vp9_impl.h" #include "rtc_base/checks.h" +#include "vpx/vp8cx.h" +#include "vpx/vp8dx.h" +#include "vpx/vpx_codec.h" namespace webrtc { std::vector SupportedVP9Codecs() { #ifdef RTC_ENABLE_VP9 - // TODO(emircan): Add Profile 2 support after fixing browser_tests. + // Profile 2 might not be available on some platforms until + // https://bugs.chromium.org/p/webm/issues/detail?id=1544 is solved. + static bool vpx_supports_high_bit_depth = + (vpx_codec_get_caps(vpx_codec_vp9_cx()) & VPX_CODEC_CAP_HIGHBITDEPTH) != + 0 && + (vpx_codec_get_caps(vpx_codec_vp9_dx()) & VPX_CODEC_CAP_HIGHBITDEPTH) != + 0; + std::vector supported_formats{SdpVideoFormat( cricket::kVp9CodecName, {{kVP9FmtpProfileId, VP9ProfileToString(VP9Profile::kProfile0)}})}; + if (vpx_supports_high_bit_depth) { + supported_formats.push_back(SdpVideoFormat( + cricket::kVp9CodecName, + {{kVP9FmtpProfileId, VP9ProfileToString(VP9Profile::kProfile2)}})); + } return supported_formats; #else return std::vector();