/* * Copyright (c) 2017 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. */ #include "api/rtp_headers.h" namespace webrtc { AudioLevel::AudioLevel() : voice_activity_(false), audio_level_(0) {} AudioLevel::AudioLevel(bool voice_activity, int audio_level) : voice_activity_(voice_activity), audio_level_(audio_level) { RTC_CHECK_GE(audio_level, 0); RTC_CHECK_LE(audio_level, 127); } RTPHeaderExtension::RTPHeaderExtension() : hasTransmissionTimeOffset(false), transmissionTimeOffset(0), hasAbsoluteSendTime(false), absoluteSendTime(0), hasTransportSequenceNumber(false), transportSequenceNumber(0), hasAudioLevel(false), voiceActivity(false), audioLevel(0), hasVideoRotation(false), videoRotation(kVideoRotation_0), hasVideoContentType(false), videoContentType(VideoContentType::UNSPECIFIED), has_video_timing(false) {} RTPHeaderExtension::RTPHeaderExtension(const RTPHeaderExtension& other) = default; RTPHeaderExtension& RTPHeaderExtension::operator=( const RTPHeaderExtension& other) = default; absl::optional RTPHeaderExtension::audio_level() const { if (!hasAudioLevel) { return absl::nullopt; } return AudioLevel(voiceActivity, audioLevel); } void RTPHeaderExtension::set_audio_level( absl::optional audio_level) { if (audio_level) { hasAudioLevel = true; voiceActivity = audio_level->voice_activity(); audioLevel = audio_level->level(); } else { hasAudioLevel = false; } } RTPHeader::RTPHeader() : markerBit(false), payloadType(0), sequenceNumber(0), timestamp(0), ssrc(0), numCSRCs(0), arrOfCSRCs(), paddingLength(0), headerLength(0), extension() {} RTPHeader::RTPHeader(const RTPHeader& other) = default; RTPHeader& RTPHeader::operator=(const RTPHeader& other) = default; } // namespace webrtc