Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(174)

Side by Side Diff: webrtc/common_types.h

Issue 1606613003: Remove extra_options from VideoCodec. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: compile Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/call/congestion_controller.cc ('k') | webrtc/modules/video_coding/codec_database.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 kResilienceOff, // The stream produced by the encoder requires a 562 kResilienceOff, // The stream produced by the encoder requires a
563 // recovery frame (typically a key frame) to be 563 // recovery frame (typically a key frame) to be
564 // decodable after a packet loss. 564 // decodable after a packet loss.
565 kResilientStream, // A stream produced by the encoder is resilient to 565 kResilientStream, // A stream produced by the encoder is resilient to
566 // packet losses, but packets within a frame subsequent 566 // packet losses, but packets within a frame subsequent
567 // to a loss can't be decoded. 567 // to a loss can't be decoded.
568 kResilientFrames // Same as kResilientStream but with added resilience 568 kResilientFrames // Same as kResilientStream but with added resilience
569 // within a frame. 569 // within a frame.
570 }; 570 };
571 571
572 class TemporalLayersFactory;
572 // VP8 specific 573 // VP8 specific
573 struct VideoCodecVP8 { 574 struct VideoCodecVP8 {
574 bool pictureLossIndicationOn; 575 bool pictureLossIndicationOn;
575 bool feedbackModeOn; 576 bool feedbackModeOn;
576 VideoCodecComplexity complexity; 577 VideoCodecComplexity complexity;
577 VP8ResilienceMode resilience; 578 VP8ResilienceMode resilience;
578 unsigned char numberOfTemporalLayers; 579 unsigned char numberOfTemporalLayers;
579 bool denoisingOn; 580 bool denoisingOn;
580 bool errorConcealmentOn; 581 bool errorConcealmentOn;
581 bool automaticResizeOn; 582 bool automaticResizeOn;
582 bool frameDroppingOn; 583 bool frameDroppingOn;
583 int keyFrameInterval; 584 int keyFrameInterval;
584 585 const TemporalLayersFactory* tl_factory;
585 bool operator==(const VideoCodecVP8& other) const {
586 return pictureLossIndicationOn == other.pictureLossIndicationOn &&
587 feedbackModeOn == other.feedbackModeOn &&
588 complexity == other.complexity &&
589 resilience == other.resilience &&
590 numberOfTemporalLayers == other.numberOfTemporalLayers &&
591 denoisingOn == other.denoisingOn &&
592 errorConcealmentOn == other.errorConcealmentOn &&
593 automaticResizeOn == other.automaticResizeOn &&
594 frameDroppingOn == other.frameDroppingOn &&
595 keyFrameInterval == other.keyFrameInterval;
596 }
597
598 bool operator!=(const VideoCodecVP8& other) const {
599 return !(*this == other);
600 }
601 }; 586 };
602 587
603 // VP9 specific. 588 // VP9 specific.
604 struct VideoCodecVP9 { 589 struct VideoCodecVP9 {
605 VideoCodecComplexity complexity; 590 VideoCodecComplexity complexity;
606 int resilience; 591 int resilience;
607 unsigned char numberOfTemporalLayers; 592 unsigned char numberOfTemporalLayers;
608 bool denoisingOn; 593 bool denoisingOn;
609 bool frameDroppingOn; 594 bool frameDroppingOn;
610 int keyFrameInterval; 595 int keyFrameInterval;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 // Simulcast is when the same stream is encoded multiple times with different 633 // Simulcast is when the same stream is encoded multiple times with different
649 // settings such as resolution. 634 // settings such as resolution.
650 struct SimulcastStream { 635 struct SimulcastStream {
651 unsigned short width; 636 unsigned short width;
652 unsigned short height; 637 unsigned short height;
653 unsigned char numberOfTemporalLayers; 638 unsigned char numberOfTemporalLayers;
654 unsigned int maxBitrate; // kilobits/sec. 639 unsigned int maxBitrate; // kilobits/sec.
655 unsigned int targetBitrate; // kilobits/sec. 640 unsigned int targetBitrate; // kilobits/sec.
656 unsigned int minBitrate; // kilobits/sec. 641 unsigned int minBitrate; // kilobits/sec.
657 unsigned int qpMax; // minimum quality 642 unsigned int qpMax; // minimum quality
658
659 bool operator==(const SimulcastStream& other) const {
660 return width == other.width &&
661 height == other.height &&
662 numberOfTemporalLayers == other.numberOfTemporalLayers &&
663 maxBitrate == other.maxBitrate &&
664 targetBitrate == other.targetBitrate &&
665 minBitrate == other.minBitrate &&
666 qpMax == other.qpMax;
667 }
668
669 bool operator!=(const SimulcastStream& other) const {
670 return !(*this == other);
671 }
672 }; 643 };
673 644
674 struct SpatialLayer { 645 struct SpatialLayer {
675 int scaling_factor_num; 646 int scaling_factor_num;
676 int scaling_factor_den; 647 int scaling_factor_den;
677 int target_bitrate_bps; 648 int target_bitrate_bps;
678 // TODO(ivica): Add max_quantizer and min_quantizer? 649 // TODO(ivica): Add max_quantizer and min_quantizer?
679 }; 650 };
680 651
681 enum VideoCodecMode { 652 enum VideoCodecMode {
(...skipping 19 matching lines...) Expand all
701 672
702 VideoCodecUnion codecSpecific; 673 VideoCodecUnion codecSpecific;
703 674
704 unsigned int qpMax; 675 unsigned int qpMax;
705 unsigned char numberOfSimulcastStreams; 676 unsigned char numberOfSimulcastStreams;
706 SimulcastStream simulcastStream[kMaxSimulcastStreams]; 677 SimulcastStream simulcastStream[kMaxSimulcastStreams];
707 SpatialLayer spatialLayers[kMaxSpatialLayers]; 678 SpatialLayer spatialLayers[kMaxSpatialLayers];
708 679
709 VideoCodecMode mode; 680 VideoCodecMode mode;
710 681
711 // When using an external encoder/decoder this allows to pass 682 bool operator==(const VideoCodec& other) const = delete;
712 // extra options without requiring webrtc to be aware of them. 683 bool operator!=(const VideoCodec& other) const = delete;
713 Config* extra_options;
714
715 bool operator==(const VideoCodec& other) const {
716 bool ret = codecType == other.codecType &&
717 (STR_CASE_CMP(plName, other.plName) == 0) &&
718 plType == other.plType &&
719 width == other.width &&
720 height == other.height &&
721 startBitrate == other.startBitrate &&
722 maxBitrate == other.maxBitrate &&
723 minBitrate == other.minBitrate &&
724 targetBitrate == other.targetBitrate &&
725 maxFramerate == other.maxFramerate &&
726 qpMax == other.qpMax &&
727 numberOfSimulcastStreams == other.numberOfSimulcastStreams &&
728 mode == other.mode;
729 if (ret && codecType == kVideoCodecVP8) {
730 ret &= (codecSpecific.VP8 == other.codecSpecific.VP8);
731 }
732
733 for (unsigned char i = 0; i < other.numberOfSimulcastStreams && ret; ++i) {
734 ret &= (simulcastStream[i] == other.simulcastStream[i]);
735 }
736 return ret;
737 }
738
739 bool operator!=(const VideoCodec& other) const {
740 return !(*this == other);
741 }
742 }; 684 };
743 685
744 // Bandwidth over-use detector options. These are used to drive 686 // Bandwidth over-use detector options. These are used to drive
745 // experimentation with bandwidth estimation parameters. 687 // experimentation with bandwidth estimation parameters.
746 // See modules/remote_bitrate_estimator/overuse_detector.h 688 // See modules/remote_bitrate_estimator/overuse_detector.h
747 struct OverUseDetectorOptions { 689 struct OverUseDetectorOptions {
748 OverUseDetectorOptions() 690 OverUseDetectorOptions()
749 : initial_slope(8.0/512.0), 691 : initial_slope(8.0/512.0),
750 initial_offset(0), 692 initial_offset(0),
751 initial_e(), 693 initial_e(),
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 uint32_t ssrc) = 0; 838 uint32_t ssrc) = 0;
897 }; 839 };
898 840
899 // RTCP mode to use. Compound mode is described by RFC 4585 and reduced-size 841 // RTCP mode to use. Compound mode is described by RFC 4585 and reduced-size
900 // RTCP mode is described by RFC 5506. 842 // RTCP mode is described by RFC 5506.
901 enum class RtcpMode { kOff, kCompound, kReducedSize }; 843 enum class RtcpMode { kOff, kCompound, kReducedSize };
902 844
903 } // namespace webrtc 845 } // namespace webrtc
904 846
905 #endif // WEBRTC_COMMON_TYPES_H_ 847 #endif // WEBRTC_COMMON_TYPES_H_
OLDNEW
« no previous file with comments | « webrtc/call/congestion_controller.cc ('k') | webrtc/modules/video_coding/codec_database.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698