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

Unified Diff: webrtc/video/video_send_stream.cc

Issue 1754283002: Make ReconfigureVideoEncoder void. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: webrtc/video/video_send_stream.cc
diff --git a/webrtc/video/video_send_stream.cc b/webrtc/video/video_send_stream.cc
index f1f9d871538a9d78216dd5839734bbacb51a56e2..b7f466b49c123131389a165412d87e798b99962e 100644
--- a/webrtc/video/video_send_stream.cc
+++ b/webrtc/video/video_send_stream.cc
@@ -288,7 +288,7 @@ VideoSendStream::VideoSendStream(
config.encoder_settings.payload_type,
config.encoder_settings.internal_source));
- RTC_CHECK(ReconfigureVideoEncoder(encoder_config));
+ ReconfigureVideoEncoder(encoder_config);
vie_channel_.RegisterSendSideDelayObserver(&stats_proxy_);
@@ -351,11 +351,12 @@ void VideoSendStream::Stop() {
vie_receiver_->StopReceive();
}
-bool VideoSendStream::ReconfigureVideoEncoder(
+void VideoSendStream::ReconfigureVideoEncoder(
const VideoEncoderConfig& config) {
TRACE_EVENT0("webrtc", "VideoSendStream::(Re)configureVideoEncoder");
LOG(LS_INFO) << "(Re)configureVideoEncoder: " << config.ToString();
const std::vector<VideoStream>& streams = config.streams;
+ static const int kEncoderMinBitrate = 30;
stefan-webrtc 2016/03/02 15:56:33 Kbps
pbos-webrtc 2016/03/02 15:57:56 Done.
RTC_DCHECK(!streams.empty());
RTC_DCHECK_GE(config_.rtp.ssrcs.size(), streams.size());
@@ -427,6 +428,8 @@ bool VideoSendStream::ReconfigureVideoEncoder(
video_codec.numberOfSimulcastStreams =
static_cast<unsigned char>(streams.size());
video_codec.minBitrate = streams[0].min_bitrate_bps / 1000;
+ if (video_codec.minBitrate < kEncoderMinBitrate)
+ video_codec.minBitrate = kEncoderMinBitrate;
RTC_DCHECK_LE(streams.size(), static_cast<size_t>(kMaxSimulcastStreams));
if (video_codec.codecType == kVideoCodecVP9) {
// If the vector is empty, bitrates will be configured automatically.
@@ -471,19 +474,20 @@ bool VideoSendStream::ReconfigureVideoEncoder(
static_cast<unsigned int>(streams[i].max_qp));
}
- // Set to zero to not update the bitrate controller from ViEEncoder, as
- // the bitrate controller is already set from Call.
- video_codec.startBitrate = 0;
+ if (video_codec.maxBitrate == 0) {
+ // Unset max bitrate -> cap to one bit per pixel.
+ video_codec.maxBitrate =
+ (video_codec.width * video_codec.height * video_codec.maxFramerate) /
+ 1000;
+ }
+ if (video_codec.maxBitrate < kEncoderMinBitrate)
+ video_codec.maxBitrate = kEncoderMinBitrate;
RTC_DCHECK_GT(streams[0].max_framerate, 0);
video_codec.maxFramerate = streams[0].max_framerate;
- if (!SetSendCodec(video_codec)) {
- LOG(LS_WARNING) << "(Re)configureVideoEncoder: SetSendCodec failed "
- "for config: "
- << config.ToString();
- return false;
- }
+ vie_encoder_.SetEncoder(video_codec);
+
// Clear stats for disabled layers.
for (size_t i = video_codec.numberOfSimulcastStreams;
i < config_.rtp.ssrcs.size(); ++i) {
@@ -494,8 +498,6 @@ bool VideoSendStream::ReconfigureVideoEncoder(
RTC_DCHECK_GE(config.min_transmit_bitrate_bps, 0);
vie_encoder_.SetMinTransmitBitrate(config.min_transmit_bitrate_bps / 1000);
-
- return true;
}
bool VideoSendStream::DeliverRtcp(const uint8_t* packet, size_t length) {
@@ -593,38 +595,5 @@ void VideoSendStream::SignalNetworkState(NetworkState state) {
int VideoSendStream::GetPaddingNeededBps() const {
return vie_encoder_.GetPaddingNeededBps();
}
-
-bool VideoSendStream::SetSendCodec(VideoCodec video_codec) {
- static const int kEncoderMinBitrate = 30;
- if (video_codec.maxBitrate == 0) {
- // Unset max bitrate -> cap to one bit per pixel.
- video_codec.maxBitrate =
- (video_codec.width * video_codec.height * video_codec.maxFramerate) /
- 1000;
- }
-
- if (video_codec.minBitrate < kEncoderMinBitrate)
- video_codec.minBitrate = kEncoderMinBitrate;
- if (video_codec.maxBitrate < kEncoderMinBitrate)
- video_codec.maxBitrate = kEncoderMinBitrate;
-
- // Stop the media flow while reconfiguring.
- vie_encoder_.Pause();
-
- if (vie_encoder_.SetEncoder(video_codec) != 0) {
- LOG(LS_ERROR) << "Failed to set encoder.";
- return false;
- }
-
- size_t num_streams = video_codec.numberOfSimulcastStreams > 0
- ? video_codec.numberOfSimulcastStreams
- : 1;
- payload_router_.SetSendingRtpModules(num_streams);
-
- // Restart the media flow
- vie_encoder_.Restart();
-
- return true;
-}
} // namespace internal
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698