diff options
author | wu@webrtc.org <wu@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2014-03-27 17:03:58 +0000 |
---|---|---|
committer | wu@webrtc.org <wu@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d> | 2014-03-27 17:03:58 +0000 |
commit | c8079d8b9dab16606ba32c1950d6a5c44ccbfc8e (patch) | |
tree | b0ee9b7d9c48adc1e383eef4c835c428e3d3d258 | |
parent | 3865f242aa057847ca2c3728d24874882ef227ee (diff) | |
download | talk-c8079d8b9dab16606ba32c1950d6a5c44ccbfc8e.tar.gz |
(Auto)update libjingle 63837929-> 63884381
git-svn-id: http://webrtc.googlecode.com/svn/trunk/talk@5800 4adac7df-926f-26a2-2b94-8c16560cd09d
-rw-r--r-- | app/webrtc/mediaconstraintsinterface.cc | 6 | ||||
-rw-r--r-- | app/webrtc/mediaconstraintsinterface.h | 3 | ||||
-rw-r--r-- | app/webrtc/webrtcsession.cc | 24 | ||||
-rw-r--r-- | media/base/mediachannel.h | 3 | ||||
-rw-r--r-- | media/webrtc/webrtcvideoengine.cc | 15 | ||||
-rw-r--r-- | media/webrtc/webrtcvideoengine.h | 7 | ||||
-rw-r--r-- | media/webrtc/webrtcvideoengine_unittest.cc | 4 |
7 files changed, 54 insertions, 8 deletions
diff --git a/app/webrtc/mediaconstraintsinterface.cc b/app/webrtc/mediaconstraintsinterface.cc index 72c5ffc..e0350d3 100644 --- a/app/webrtc/mediaconstraintsinterface.cc +++ b/app/webrtc/mediaconstraintsinterface.cc @@ -86,6 +86,12 @@ const char MediaConstraintsInterface::kCpuOveruseThreshold[] = "googCpuOveruseThreshold"; const char MediaConstraintsInterface::kCpuOveruseEncodeUsage[] = "googCpuOveruseEncodeUsage"; +const char MediaConstraintsInterface::kHighStartBitrate[] = + "googHighStartBitrate"; +const char MediaConstraintsInterface::kHighBitrate[] = + "googHighBitrate"; +const char MediaConstraintsInterface::kVeryHighBitrate[] = + "googVeryHighBitrate"; // Constraint keys for CreateOffer / CreateAnswer defined in W3C specification. const char MediaConstraintsInterface::kOfferToReceiveAudio[] = diff --git a/app/webrtc/mediaconstraintsinterface.h b/app/webrtc/mediaconstraintsinterface.h index 8c1ba17..7030a88 100644 --- a/app/webrtc/mediaconstraintsinterface.h +++ b/app/webrtc/mediaconstraintsinterface.h @@ -100,6 +100,9 @@ class MediaConstraintsInterface { static const char kCpuUnderuseThreshold[]; static const char kCpuOveruseThreshold[]; static const char kCpuOveruseEncodeUsage[]; + static const char kHighStartBitrate[]; // googHighStartBitrate + static const char kHighBitrate[]; // googHighBitrate + static const char kVeryHighBitrate[]; // googVeryHighBitrate // Constraint keys for CreateOffer / CreateAnswer // Specified by the W3C PeerConnection spec diff --git a/app/webrtc/webrtcsession.cc b/app/webrtc/webrtcsession.cc index af9d205..50221ac 100644 --- a/app/webrtc/webrtcsession.cc +++ b/app/webrtc/webrtcsession.cc @@ -578,6 +578,30 @@ bool WebRtcSession::Initialize( video_options_.use_improved_wifi_bandwidth_estimator.Set(value); } + if (FindConstraint( + constraints, + MediaConstraintsInterface::kHighStartBitrate, + &value, + NULL)) { + video_options_.video_start_bitrate.Set(cricket::kHighStartBitrate); + } + + if (FindConstraint( + constraints, + MediaConstraintsInterface::kVeryHighBitrate, + &value, + NULL)) { + video_options_.video_highest_bitrate.Set( + cricket::VideoOptions::VERY_HIGH); + } else if (FindConstraint( + constraints, + MediaConstraintsInterface::kHighBitrate, + &value, + NULL)) { + video_options_.video_highest_bitrate.Set( + cricket::VideoOptions::HIGH); + } + const cricket::VideoCodec default_codec( JsepSessionDescription::kDefaultVideoCodecId, JsepSessionDescription::kDefaultVideoCodecName, diff --git a/media/base/mediachannel.h b/media/base/mediachannel.h index 873c1ff..9bdf4d9 100644 --- a/media/base/mediachannel.h +++ b/media/base/mediachannel.h @@ -62,6 +62,7 @@ class VideoRenderer; const int kMinRtpHeaderExtensionId = 1; const int kMaxRtpHeaderExtensionId = 255; const int kScreencastDefaultFps = 5; +const int kHighStartBitrate = 1500; // Used in AudioOptions and VideoOptions to signify "unset" values. template <class T> @@ -441,7 +442,7 @@ struct VideoOptions { // Enable WebRTC leaky bucket when sending media packets. Settable<bool> video_leaky_bucket; // Set highest bitrate mode for video. - Settable<int> video_highest_bitrate; + Settable<HighestBitrate> video_highest_bitrate; // Enable WebRTC Cpu Overuse Detection, which is a new version of the CPU // adaptation algorithm. So this option will override the // |adapt_input_to_cpu_usage|. diff --git a/media/webrtc/webrtcvideoengine.cc b/media/webrtc/webrtcvideoengine.cc index f48596a..bc7b3d1 100644 --- a/media/webrtc/webrtcvideoengine.cc +++ b/media/webrtc/webrtcvideoengine.cc @@ -36,6 +36,7 @@ #include <set> #include "talk/base/basictypes.h" +#include "talk/base/bind.h" #include "talk/base/buffer.h" #include "talk/base/byteorder.h" #include "talk/base/common.h" @@ -3088,8 +3089,18 @@ bool WebRtcVideoMediaChannel::GetVideoAdapter( return true; } +void WebRtcVideoMediaChannel::OnFrameFromCapturer(VideoCapturer* capturer, + const VideoFrame* frame) { + // This method is called from the capturer thread while the rest of the + // WebRtcVideoMediaChannel is run on the worker thread. + engine_->worker_thread()->Invoke<void>( + Bind(&WebRtcVideoMediaChannel::SendFrame, this, capturer, frame)); +} + void WebRtcVideoMediaChannel::SendFrame(VideoCapturer* capturer, const VideoFrame* frame) { + // TODO(ronghuawu): Reenable once webrtc 3125 is fixed. + // ASSERT(engine_->worker_thread() == talk_base::Thread::Current()); // If the |capturer| is registered to any send channel, then send the frame // to those send channels. bool capturer_is_channel_owned = false; @@ -4037,8 +4048,8 @@ bool WebRtcVideoMediaChannel::SetLocalRtxSsrc(int channel_id, void WebRtcVideoMediaChannel::MaybeConnectCapturer(VideoCapturer* capturer) { if (capturer != NULL && GetSendChannelNum(capturer) == 1) { - capturer->SignalVideoFrame.connect(this, - &WebRtcVideoMediaChannel::SendFrame); + capturer->SignalVideoFrame.connect( + this, &WebRtcVideoMediaChannel::OnFrameFromCapturer); } } diff --git a/media/webrtc/webrtcvideoengine.h b/media/webrtc/webrtcvideoengine.h index 1d36ab1..968d2c0 100644 --- a/media/webrtc/webrtcvideoengine.h +++ b/media/webrtc/webrtcvideoengine.h @@ -292,9 +292,7 @@ class WebRtcVideoMediaChannel : public talk_base::MessageHandler, uint32 send_ssrc() const { return 0; } bool GetRenderer(uint32 ssrc, VideoRenderer** renderer); bool GetVideoAdapter(uint32 ssrc, CoordinatedVideoAdapter** video_adapter); - void SendFrame(VideoCapturer* capturer, const VideoFrame* frame); - bool SendFrame(WebRtcVideoChannelSendInfo* channel_info, - const VideoFrame* frame, bool is_screencast); + void OnFrameFromCapturer(VideoCapturer* capturer, const VideoFrame* frame); // Thunk functions for use with HybridVideoEngine void OnLocalFrame(VideoCapturer* capturer, const VideoFrame* frame) { @@ -416,6 +414,9 @@ class WebRtcVideoMediaChannel : public talk_base::MessageHandler, // to one send channel, i.e. the last send channel. void MaybeDisconnectCapturer(VideoCapturer* capturer); + void SendFrame(VideoCapturer* capturer, const VideoFrame* frame); + bool SendFrame(WebRtcVideoChannelSendInfo* channel_info, + const VideoFrame* frame, bool is_screencast); bool RemoveRecvStreamInternal(uint32 ssrc); // Global state. diff --git a/media/webrtc/webrtcvideoengine_unittest.cc b/media/webrtc/webrtcvideoengine_unittest.cc index a61b8d8..b436ce2 100644 --- a/media/webrtc/webrtcvideoengine_unittest.cc +++ b/media/webrtc/webrtcvideoengine_unittest.cc @@ -128,7 +128,7 @@ class WebRtcVideoEngineTestFake : public testing::Test, return false; } cricket::FakeVideoCapturer capturer; - channel_->SendFrame(&capturer, &frame); + channel_->OnFrameFromCapturer(&capturer, &frame); return true; } bool SendI420ScreencastFrame(int width, int height) { @@ -145,7 +145,7 @@ class WebRtcVideoEngineTestFake : public testing::Test, } cricket::FakeVideoCapturer capturer; capturer.SetScreencast(true); - channel_->SendFrame(&capturer, &frame); + channel_->OnFrameFromCapturer(&capturer, &frame); return true; } void VerifyCodecFeedbackParams(const cricket::VideoCodec& codec) { |