/* * Copyright (c) 2016 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 WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_HEADER_EXTENSIONS_H_ #define WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_HEADER_EXTENSIONS_H_ #include "webrtc/base/basictypes.h" #include "webrtc/call.h" #include "webrtc/common_video/rotation.h" #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" namespace webrtc { class AbsoluteSendTime { public: static constexpr RTPExtensionType kId = kRtpExtensionAbsoluteSendTime; static constexpr uint8_t kValueSizeBytes = 3; static const char* kName; static bool IsSupportedFor(MediaType type); static bool Parse(const uint8_t* data, uint32_t* time_ms); static bool Write(uint8_t* data, int64_t time_ms); }; class AudioLevel { public: static constexpr RTPExtensionType kId = kRtpExtensionAudioLevel; static constexpr uint8_t kValueSizeBytes = 1; static const char* kName; static bool IsSupportedFor(MediaType type); static bool Parse(const uint8_t* data, bool* voice_activity, uint8_t* audio_level); static bool Write(uint8_t* data, bool voice_activity, uint8_t audio_level); }; class TransmissionOffset { public: static constexpr RTPExtensionType kId = kRtpExtensionTransmissionTimeOffset; static constexpr uint8_t kValueSizeBytes = 3; static const char* kName; static bool IsSupportedFor(MediaType type); static bool Parse(const uint8_t* data, int32_t* time_ms); static bool Write(uint8_t* data, int64_t time_ms); }; class TransportSequenceNumber { public: static constexpr RTPExtensionType kId = kRtpExtensionTransportSequenceNumber; static constexpr uint8_t kValueSizeBytes = 2; static const char* kName; static bool IsSupportedFor(MediaType type); static bool Parse(const uint8_t* data, uint16_t* value); static bool Write(uint8_t* data, uint16_t value); }; class VideoOrientation { public: static constexpr RTPExtensionType kId = kRtpExtensionVideoRotation; static constexpr uint8_t kValueSizeBytes = 1; static const char* kName; static bool IsSupportedFor(MediaType type); static bool Parse(const uint8_t* data, VideoRotation* value); static bool Write(uint8_t* data, VideoRotation value); static bool Parse(const uint8_t* data, uint8_t* value); static bool Write(uint8_t* data, uint8_t value); }; } // namespace webrtc #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_HEADER_EXTENSIONS_H_