| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| 11 #ifndef WEBRTC_COMMON_TYPES_H_ | 11 #ifndef WEBRTC_COMMON_TYPES_H_ |
| 12 #define WEBRTC_COMMON_TYPES_H_ | 12 #define WEBRTC_COMMON_TYPES_H_ |
| 13 | 13 |
| 14 #include <assert.h> | 14 #include <assert.h> |
| 15 #include <stddef.h> | 15 #include <stddef.h> |
| 16 #include <string.h> | 16 #include <string.h> |
| 17 | 17 |
| 18 #include <string> | 18 #include <string> |
| 19 #include <vector> | 19 #include <vector> |
| 20 | 20 |
| 21 #include "webrtc/base/optional.h" |
| 21 #include "webrtc/common_video/rotation.h" | 22 #include "webrtc/common_video/rotation.h" |
| 22 #include "webrtc/typedefs.h" | 23 #include "webrtc/typedefs.h" |
| 23 | 24 |
| 24 #if defined(_MSC_VER) | 25 #if defined(_MSC_VER) |
| 25 // Disable "new behavior: elements of array will be default initialized" | 26 // Disable "new behavior: elements of array will be default initialized" |
| 26 // warning. Affects OverUseDetectorOptions. | 27 // warning. Affects OverUseDetectorOptions. |
| 27 #pragma warning(disable : 4351) | 28 #pragma warning(disable : 4351) |
| 28 #endif | 29 #endif |
| 29 | 30 |
| 30 #if defined(WEBRTC_EXPORT) | 31 #if defined(WEBRTC_EXPORT) |
| (...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 515 bool pictureLossIndicationOn; | 516 bool pictureLossIndicationOn; |
| 516 bool feedbackModeOn; | 517 bool feedbackModeOn; |
| 517 VideoCodecComplexity complexity; | 518 VideoCodecComplexity complexity; |
| 518 VP8ResilienceMode resilience; | 519 VP8ResilienceMode resilience; |
| 519 unsigned char numberOfTemporalLayers; | 520 unsigned char numberOfTemporalLayers; |
| 520 bool denoisingOn; | 521 bool denoisingOn; |
| 521 bool errorConcealmentOn; | 522 bool errorConcealmentOn; |
| 522 bool automaticResizeOn; | 523 bool automaticResizeOn; |
| 523 bool frameDroppingOn; | 524 bool frameDroppingOn; |
| 524 int keyFrameInterval; | 525 int keyFrameInterval; |
| 525 const TemporalLayersFactory* tl_factory; | 526 TemporalLayersFactory* tl_factory; |
| 526 }; | 527 }; |
| 527 | 528 |
| 528 // VP9 specific. | 529 // VP9 specific. |
| 529 struct VideoCodecVP9 { | 530 struct VideoCodecVP9 { |
| 530 VideoCodecComplexity complexity; | 531 VideoCodecComplexity complexity; |
| 531 int resilience; | 532 int resilience; |
| 532 unsigned char numberOfTemporalLayers; | 533 unsigned char numberOfTemporalLayers; |
| 533 bool denoisingOn; | 534 bool denoisingOn; |
| 534 bool frameDroppingOn; | 535 bool frameDroppingOn; |
| 535 int keyFrameInterval; | 536 int keyFrameInterval; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 556 kVideoCodecVP9, | 557 kVideoCodecVP9, |
| 557 kVideoCodecH264, | 558 kVideoCodecH264, |
| 558 kVideoCodecI420, | 559 kVideoCodecI420, |
| 559 kVideoCodecRED, | 560 kVideoCodecRED, |
| 560 kVideoCodecULPFEC, | 561 kVideoCodecULPFEC, |
| 561 kVideoCodecFlexfec, | 562 kVideoCodecFlexfec, |
| 562 kVideoCodecGeneric, | 563 kVideoCodecGeneric, |
| 563 kVideoCodecUnknown | 564 kVideoCodecUnknown |
| 564 }; | 565 }; |
| 565 | 566 |
| 567 // Translates from name of codec to codec type and vice versa. |
| 568 rtc::Optional<std::string> CodecTypeToPayloadName(VideoCodecType type); |
| 569 rtc::Optional<VideoCodecType> PayloadNameToCodecType(const std::string& name); |
| 570 |
| 566 union VideoCodecUnion { | 571 union VideoCodecUnion { |
| 567 VideoCodecVP8 VP8; | 572 VideoCodecVP8 VP8; |
| 568 VideoCodecVP9 VP9; | 573 VideoCodecVP9 VP9; |
| 569 VideoCodecH264 H264; | 574 VideoCodecH264 H264; |
| 570 }; | 575 }; |
| 571 | 576 |
| 572 // Simulcast is when the same stream is encoded multiple times with different | 577 // Simulcast is when the same stream is encoded multiple times with different |
| 573 // settings such as resolution. | 578 // settings such as resolution. |
| 574 struct SimulcastStream { | 579 struct SimulcastStream { |
| 575 unsigned short width; | 580 unsigned short width; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 632 VideoCodecH264* H264(); | 637 VideoCodecH264* H264(); |
| 633 const VideoCodecH264& H264() const; | 638 const VideoCodecH264& H264() const; |
| 634 | 639 |
| 635 // This variable will be declared private and renamed to codec_specific_ | 640 // This variable will be declared private and renamed to codec_specific_ |
| 636 // once Chromium is not accessing it. | 641 // once Chromium is not accessing it. |
| 637 // TODO(hta): Consider replacing the union with a pointer type. | 642 // TODO(hta): Consider replacing the union with a pointer type. |
| 638 // This will allow removing the VideoCodec* types from this file. | 643 // This will allow removing the VideoCodec* types from this file. |
| 639 VideoCodecUnion codecSpecific; | 644 VideoCodecUnion codecSpecific; |
| 640 }; | 645 }; |
| 641 | 646 |
| 647 class BitrateAllocation { |
| 648 public: |
| 649 static const size_t kMaxBitrateBps; |
| 650 BitrateAllocation(); |
| 651 |
| 652 bool SetBitrate(size_t spatial_index, |
| 653 size_t temporal_index, |
| 654 uint32_t bitrate_bps); |
| 655 |
| 656 uint32_t GetBitrate(size_t spatial_index, size_t temporal_index) const; |
| 657 |
| 658 // Get the sum of all the temporal layer for a specific spatial layer. |
| 659 uint32_t GetSpatialLayerSum(size_t spatial_index) const; |
| 660 |
| 661 uint32_t get_sum_bps() const { return sum_; } // Sum of all bitrates. |
| 662 uint32_t get_sum_kbps() const { return (sum_ + 500) / 1000; } |
| 663 |
| 664 inline bool operator==(const BitrateAllocation& other) const { |
| 665 return memcmp(bitrates_, other.bitrates_, sizeof(bitrates_)) == 0; |
| 666 } |
| 667 inline bool operator!=(const BitrateAllocation& other) const { |
| 668 return !(*this == other); |
| 669 } |
| 670 |
| 671 private: |
| 672 uint32_t sum_; |
| 673 uint32_t bitrates_[kMaxSpatialLayers][kMaxTemporalStreams]; |
| 674 }; |
| 675 |
| 642 // Bandwidth over-use detector options. These are used to drive | 676 // Bandwidth over-use detector options. These are used to drive |
| 643 // experimentation with bandwidth estimation parameters. | 677 // experimentation with bandwidth estimation parameters. |
| 644 // See modules/remote_bitrate_estimator/overuse_detector.h | 678 // See modules/remote_bitrate_estimator/overuse_detector.h |
| 645 struct OverUseDetectorOptions { | 679 struct OverUseDetectorOptions { |
| 646 OverUseDetectorOptions() | 680 OverUseDetectorOptions() |
| 647 : initial_slope(8.0 / 512.0), | 681 : initial_slope(8.0 / 512.0), |
| 648 initial_offset(0), | 682 initial_offset(0), |
| 649 initial_e(), | 683 initial_e(), |
| 650 initial_process_noise(), | 684 initial_process_noise(), |
| 651 initial_avg_noise(0.0), | 685 initial_avg_noise(0.0), |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 838 enum class RtcpMode { kOff, kCompound, kReducedSize }; | 872 enum class RtcpMode { kOff, kCompound, kReducedSize }; |
| 839 | 873 |
| 840 enum NetworkState { | 874 enum NetworkState { |
| 841 kNetworkUp, | 875 kNetworkUp, |
| 842 kNetworkDown, | 876 kNetworkDown, |
| 843 }; | 877 }; |
| 844 | 878 |
| 845 } // namespace webrtc | 879 } // namespace webrtc |
| 846 | 880 |
| 847 #endif // WEBRTC_COMMON_TYPES_H_ | 881 #endif // WEBRTC_COMMON_TYPES_H_ |
| OLD | NEW |