Add chroma siting to color space RTP extension
- Add chroma siting to color space RTP extension. - Use 16 bits for max/min luminance. - Change denominator of chromaticity and luminance. - Add RTC_DCHECKs to protect against overflows. Bug: webrtc:8651 Change-Id: If8b95bad6241381224eaba9c5bccce06a65a9195 Reviewed-on: https://webrtc-review.googlesource.com/c/113804 Commit-Queue: Johannes Kron <kron@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Niels Moller <nisse@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25990}
This commit is contained in:
committed by
Commit Bot
parent
0697ce2a76
commit
c13f4be5f4
@ -186,7 +186,7 @@ class ColorSpaceExtension {
|
||||
public:
|
||||
using value_type = ColorSpace;
|
||||
static constexpr RTPExtensionType kId = kRtpExtensionColorSpace;
|
||||
static constexpr uint8_t kValueSizeBytes = 30;
|
||||
static constexpr uint8_t kValueSizeBytes = 28;
|
||||
static constexpr uint8_t kValueSizeBytesWithoutHdrMetadata = 4;
|
||||
static constexpr const char kUri[] =
|
||||
"http://www.webrtc.org/experiments/rtp-hdrext/color-space";
|
||||
@ -201,12 +201,21 @@ class ColorSpaceExtension {
|
||||
const ColorSpace& color_space);
|
||||
|
||||
private:
|
||||
static constexpr int kChromaticityDenominator = 10000; // 0.0001 resolution.
|
||||
static constexpr int kLuminanceMaxDenominator = 100; // 0.01 resolution.
|
||||
static constexpr int kChromaticityDenominator = 50000; // 0.00002 resolution.
|
||||
static constexpr int kLuminanceMaxDenominator = 1; // 1 resolution.
|
||||
static constexpr int kLuminanceMinDenominator = 10000; // 0.0001 resolution.
|
||||
|
||||
static uint8_t CombineRangeAndChromaSiting(
|
||||
ColorSpace::RangeID range,
|
||||
ColorSpace::ChromaSiting chroma_siting_horizontal,
|
||||
ColorSpace::ChromaSiting chroma_siting_vertical);
|
||||
static size_t ParseHdrMetadata(rtc::ArrayView<const uint8_t> data,
|
||||
HdrMetadata* hdr_metadata);
|
||||
static size_t ParseChromaticity(const uint8_t* data,
|
||||
HdrMasteringMetadata::Chromaticity* p);
|
||||
static size_t ParseLuminance(const uint8_t* data, float* f, int denominator);
|
||||
static size_t WriteHdrMetadata(rtc::ArrayView<uint8_t> data,
|
||||
const HdrMetadata& hdr_metadata);
|
||||
static size_t WriteChromaticity(uint8_t* data,
|
||||
const HdrMasteringMetadata::Chromaticity& p);
|
||||
static size_t WriteLuminance(uint8_t* data, float f, int denominator);
|
||||
|
||||
Reference in New Issue
Block a user