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 |
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
540 kVideoNV12 = 11, | 540 kVideoNV12 = 11, |
541 kVideoNV21 = 12, | 541 kVideoNV21 = 12, |
542 kVideoBGRA = 13, | 542 kVideoBGRA = 13, |
543 kVideoUnknown = 99 | 543 kVideoUnknown = 99 |
544 }; | 544 }; |
545 | 545 |
546 // Video codec | 546 // Video codec |
547 enum { kConfigParameterSize = 128}; | 547 enum { kConfigParameterSize = 128}; |
548 enum { kPayloadNameSize = 32}; | 548 enum { kPayloadNameSize = 32}; |
549 enum { kMaxSimulcastStreams = 4}; | 549 enum { kMaxSimulcastStreams = 4}; |
| 550 enum { kMaxSpatialLayers = 5 }; |
550 enum { kMaxTemporalStreams = 4}; | 551 enum { kMaxTemporalStreams = 4}; |
551 | 552 |
552 enum VideoCodecComplexity | 553 enum VideoCodecComplexity |
553 { | 554 { |
554 kComplexityNormal = 0, | 555 kComplexityNormal = 0, |
555 kComplexityHigh = 1, | 556 kComplexityHigh = 1, |
556 kComplexityHigher = 2, | 557 kComplexityHigher = 2, |
557 kComplexityMax = 3 | 558 kComplexityMax = 3 |
558 }; | 559 }; |
559 | 560 |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
669 targetBitrate == other.targetBitrate && | 670 targetBitrate == other.targetBitrate && |
670 minBitrate == other.minBitrate && | 671 minBitrate == other.minBitrate && |
671 qpMax == other.qpMax; | 672 qpMax == other.qpMax; |
672 } | 673 } |
673 | 674 |
674 bool operator!=(const SimulcastStream& other) const { | 675 bool operator!=(const SimulcastStream& other) const { |
675 return !(*this == other); | 676 return !(*this == other); |
676 } | 677 } |
677 }; | 678 }; |
678 | 679 |
| 680 struct SpatialLayer { |
| 681 int scaling_factor_num; |
| 682 int scaling_factor_den; |
| 683 int target_bitrate_bps; |
| 684 // TODO(ivica): Add max_quantizer and min_quantizer? |
| 685 }; |
| 686 |
679 enum VideoCodecMode { | 687 enum VideoCodecMode { |
680 kRealtimeVideo, | 688 kRealtimeVideo, |
681 kScreensharing | 689 kScreensharing |
682 }; | 690 }; |
683 | 691 |
684 // Common video codec properties | 692 // Common video codec properties |
685 struct VideoCodec { | 693 struct VideoCodec { |
686 VideoCodecType codecType; | 694 VideoCodecType codecType; |
687 char plName[kPayloadNameSize]; | 695 char plName[kPayloadNameSize]; |
688 unsigned char plType; | 696 unsigned char plType; |
689 | 697 |
690 unsigned short width; | 698 unsigned short width; |
691 unsigned short height; | 699 unsigned short height; |
692 | 700 |
693 unsigned int startBitrate; // kilobits/sec. | 701 unsigned int startBitrate; // kilobits/sec. |
694 unsigned int maxBitrate; // kilobits/sec. | 702 unsigned int maxBitrate; // kilobits/sec. |
695 unsigned int minBitrate; // kilobits/sec. | 703 unsigned int minBitrate; // kilobits/sec. |
696 unsigned int targetBitrate; // kilobits/sec. | 704 unsigned int targetBitrate; // kilobits/sec. |
697 | 705 |
698 unsigned char maxFramerate; | 706 unsigned char maxFramerate; |
699 | 707 |
700 VideoCodecUnion codecSpecific; | 708 VideoCodecUnion codecSpecific; |
701 | 709 |
702 unsigned int qpMax; | 710 unsigned int qpMax; |
703 unsigned char numberOfSimulcastStreams; | 711 unsigned char numberOfSimulcastStreams; |
704 SimulcastStream simulcastStream[kMaxSimulcastStreams]; | 712 SimulcastStream simulcastStream[kMaxSimulcastStreams]; |
| 713 SpatialLayer spatialLayers[kMaxSpatialLayers]; |
705 | 714 |
706 VideoCodecMode mode; | 715 VideoCodecMode mode; |
707 | 716 |
708 // When using an external encoder/decoder this allows to pass | 717 // When using an external encoder/decoder this allows to pass |
709 // extra options without requiring webrtc to be aware of them. | 718 // extra options without requiring webrtc to be aware of them. |
710 Config* extra_options; | 719 Config* extra_options; |
711 | 720 |
712 bool operator==(const VideoCodec& other) const { | 721 bool operator==(const VideoCodec& other) const { |
713 bool ret = codecType == other.codecType && | 722 bool ret = codecType == other.codecType && |
714 (STR_CASE_CMP(plName, other.plName) == 0) && | 723 (STR_CASE_CMP(plName, other.plName) == 0) && |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
893 uint32_t ssrc) = 0; | 902 uint32_t ssrc) = 0; |
894 }; | 903 }; |
895 | 904 |
896 // RTCP mode to use. Compound mode is described by RFC 4585 and reduced-size | 905 // RTCP mode to use. Compound mode is described by RFC 4585 and reduced-size |
897 // RTCP mode is described by RFC 5506. | 906 // RTCP mode is described by RFC 5506. |
898 enum class RtcpMode { kOff, kCompound, kReducedSize }; | 907 enum class RtcpMode { kOff, kCompound, kReducedSize }; |
899 | 908 |
900 } // namespace webrtc | 909 } // namespace webrtc |
901 | 910 |
902 #endif // WEBRTC_COMMON_TYPES_H_ | 911 #endif // WEBRTC_COMMON_TYPES_H_ |
OLD | NEW |