1357 Commits

Author SHA1 Message Date
Danil Chapovalov
4e849f6925 Revert "Reland "Moved congestion controller to task queue.""
This reverts commit 57daeb7ac7f3d80992905b53fea500953fcfd793.

Reason for revert: Cause increased congestion and deadlocks in downstream project

Original change's description:
> Reland "Moved congestion controller to task queue."
> 
> This is a reland of 0cbcba7ea0dced1a7f353c64d6cf91d46ccb29f9.
> 
> Original change's description:
> > Moved congestion controller to task queue.
> > 
> > The goal of this work is to make it easier to experiment with the
> > bandwidth estimation implementation. For this reason network control
> > functionality is moved from SendSideCongestionController(SSCC),
> > PacedSender and BitrateController to the newly created
> > GoogCcNetworkController which implements the newly created
> > NetworkControllerInterface. This allows the implementation to be
> > replaced at runtime in the future.
> > 
> > This is the first part of a split of a larger CL, see:
> > https://webrtc-review.googlesource.com/c/src/+/39788/8
> > For further explanations.
> > 
> > Bug: webrtc:8415
> > Change-Id: I770189c04cc31b313bd4e57821acff55fbcb1ad3
> > Reviewed-on: https://webrtc-review.googlesource.com/43840
> > Commit-Queue: Sebastian Jansson <srte@webrtc.org>
> > Reviewed-by: Björn Terelius <terelius@webrtc.org>
> > Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#21868}
> 
> Bug: webrtc:8415
> Change-Id: I1d1756a30deed5b421b1c91c1918a13b6bb455da
> Reviewed-on: https://webrtc-review.googlesource.com/48000
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Commit-Queue: Sebastian Jansson <srte@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21899}

TBR=terelius@webrtc.org,stefan@webrtc.org,srte@webrtc.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: webrtc:8415
Change-Id: Ida8074dcac2cc28b3629228eb22846d8a8e81b83
Reviewed-on: https://webrtc-review.googlesource.com/52980
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22017}
2018-02-14 11:38:43 +00:00
Niels Möller
73f29cbcc1 Move creation of OveruseFrameDetector to VideoSendStream.
Intended to make it easier to wire up cpu-adaptation experiments.
To setup the circular references between OveruseFrameDetector and
VideoStreamEncoder, let the AdaptationObserverInterface pointer be
an argument to StartCheckForOveruse.

Bug: webrtc:8504
Change-Id: Ifcf7655ec65e637819d77f507552cb22a6aa5f0f
Reviewed-on: https://webrtc-review.googlesource.com/33340
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22006}
2018-02-13 15:45:03 +00:00
Niels Möller
0b556b04e6 Reduce public inheritance in VideoStreamEncoder.
Implementation of the EncodedImageCallback and
AdaptationObserverInterface belongs with the implementation, not the
public interface.

Bug: webrtc:8830
Change-Id: I901ae79ede252599c5fe22284cf649274c5b1422
Reviewed-on: https://webrtc-review.googlesource.com/51862
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22000}
2018-02-13 14:09:00 +00:00
Emircan Uysaler
ef76e5a062 Add multiplex case to codec_tests
Bug: webrtc:7671
Change-Id: I38de24ea300d69757f5bd07111abc83b1f042751
Reviewed-on: https://webrtc-review.googlesource.com/50700
Commit-Queue: Emircan Uysaler <emircan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21991}
2018-02-12 22:28:04 +00:00
Ying Wang
338bd62ab4 Includes the time(ms) that spent in network to test results.
Bug: None
Change-Id: I7af7055b924e3f68b0fd4ebb633190246275159f
Reviewed-on: https://webrtc-review.googlesource.com/50400
Commit-Queue: Ying Wang <yinwa@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21975}
2018-02-09 17:12:59 +00:00
Stefan Holmer
32e930fffa Add a freeze metric to the video quality test.
Defined as time between freezes (nothing rendered for 150 ms).

Bug: webrtc:8861
Change-Id: I56eae3beb7278b6d1894a0593ae3092c9f3cb1cc
Reviewed-on: https://webrtc-review.googlesource.com/49780
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21970}
2018-02-09 13:01:47 +00:00
Sebastian Jansson
b0acec3679 Testing that media is resumed when congestion ends.
Expanded congestion window test to test that media is resumed after
being stopped due to congestion window getting filled. Previously only
the behavior that padding packets was sent in congested state was tested,
but not that media actually was resumed when feedback from the padding
packets was received.

Bug: None
Change-Id: Icd494c2e5386926f92c4d5dd0e8bc80c81608325
Reviewed-on: https://webrtc-review.googlesource.com/46262
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21941}
2018-02-07 15:31:26 +00:00
Niels Möller
a8b150888c Stricter declarations in VideoStreamEncoder.
Mark overuse_detector_ pointer const, add a few
RTC_RUN_ON and RTC_PT_GUARDED_BY annotations.

Bug: none
Change-Id: Ibaf6d738f20fbffacfed42c36a34779be52dd9fc
Reviewed-on: https://webrtc-review.googlesource.com/46000
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21936}
2018-02-07 14:44:39 +00:00
Niels Möller
1e06289cdb Delete macro RTC_ACCESS_ON, replaced by RTC_GUARDED_BY.
Both macros do the same thing, as wrappers for
__attribute__((guarded_by)), and more names for the same thing doesn't
add to clarity.

Bug: none
Change-Id: Iaaf7b21dbf3345ee90fee22c39b636823d195eb0
Reviewed-on: https://webrtc-review.googlesource.com/48361
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21929}
2018-02-07 10:07:28 +00:00
Seth Hampson
8234ead6d9 Allows the application to set active simulcast streams.
Currently all simulcast streams are set as active by default. This
update takes the values of the rtp encoding parameters and wires those
values down to the VideoSendStream and VideoStreamEncoder, so that the
appropriate simulcast streams can be turned off and on. This includes
adding more application specific controls in the EncoderStreamFactory.

Bug: webrtc:8653
Change-Id: Iaa7da3209cea0f0db72543981a319e319705cb00
Reviewed-on: https://webrtc-review.googlesource.com/47245
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Commit-Queue: Seth Hampson <shampson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21920}
2018-02-06 18:51:14 +00:00
Stefan Holmer
c6b224abc0 Pass the external fec_controller_ to VideoSendStream when available.
Bug: None
Change-Id: I179c81de2cb7da2a2742c3ebc333a1e0ea15bcc8
Reviewed-on: https://webrtc-review.googlesource.com/48522
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Ying Wang <yinwa@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21913}
2018-02-06 13:21:52 +00:00
Sebastian Jansson
57daeb7ac7 Reland "Moved congestion controller to task queue."
This is a reland of 0cbcba7ea0dced1a7f353c64d6cf91d46ccb29f9.

Original change's description:
> Moved congestion controller to task queue.
> 
> The goal of this work is to make it easier to experiment with the
> bandwidth estimation implementation. For this reason network control
> functionality is moved from SendSideCongestionController(SSCC),
> PacedSender and BitrateController to the newly created
> GoogCcNetworkController which implements the newly created
> NetworkControllerInterface. This allows the implementation to be
> replaced at runtime in the future.
> 
> This is the first part of a split of a larger CL, see:
> https://webrtc-review.googlesource.com/c/src/+/39788/8
> For further explanations.
> 
> Bug: webrtc:8415
> Change-Id: I770189c04cc31b313bd4e57821acff55fbcb1ad3
> Reviewed-on: https://webrtc-review.googlesource.com/43840
> Commit-Queue: Sebastian Jansson <srte@webrtc.org>
> Reviewed-by: Björn Terelius <terelius@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21868}

Bug: webrtc:8415
Change-Id: I1d1756a30deed5b421b1c91c1918a13b6bb455da
Reviewed-on: https://webrtc-review.googlesource.com/48000
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21899}
2018-02-06 08:38:49 +00:00
Karl Wiberg
80ba333fc5 Move FALLTHROUGH macro to a separate header, and give it an RTC_ prefix
Bug: chromium:805946
Change-Id: Ibb5dce9af27d0e48c9aee6b0a860b6f62b3c76a0
Reviewed-on: https://webrtc-review.googlesource.com/46145
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21889}
2018-02-05 11:24:59 +00:00
Seth Hampson
cc7125f240 Sets sending status for active RtpRtcp modules.
When a simulcast stream is enabled or disabled, we want this state
change to be reflected properly in the RtpRtcp modules. Each video send
stream can contain multiple rtp_rtcp_modules pertaining to different
simulcast streams. These modules are currently all turned on/off when
the send stream is started and stopped. This change allows for
individual modules to be turned on/off. This means if a module stops
sending it will send a bye message, so the receiving side will not
expect more frames to be sent when the stream is inactive and the
encoder is no longer encoding/sending images.

Bug: webrtc:8653
Change-Id: Ib6d00240f627b4ff1714646e847026f24c7c3aa4
Reviewed-on: https://webrtc-review.googlesource.com/42841
Commit-Queue: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21880}
2018-02-02 17:52:46 +00:00
Sebastian Jansson
5a503b05e1 Revert "Moved congestion controller to task queue."
This reverts commit 0cbcba7ea0dced1a7f353c64d6cf91d46ccb29f9.

Reason for revert: Major regressions on perf bots.

Original change's description:
> Moved congestion controller to task queue.
> 
> The goal of this work is to make it easier to experiment with the
> bandwidth estimation implementation. For this reason network control
> functionality is moved from SendSideCongestionController(SSCC),
> PacedSender and BitrateController to the newly created
> GoogCcNetworkController which implements the newly created
> NetworkControllerInterface. This allows the implementation to be
> replaced at runtime in the future.
> 
> This is the first part of a split of a larger CL, see:
> https://webrtc-review.googlesource.com/c/src/+/39788/8
> For further explanations.
> 
> Bug: webrtc:8415
> Change-Id: I770189c04cc31b313bd4e57821acff55fbcb1ad3
> Reviewed-on: https://webrtc-review.googlesource.com/43840
> Commit-Queue: Sebastian Jansson <srte@webrtc.org>
> Reviewed-by: Björn Terelius <terelius@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21868}

TBR=terelius@webrtc.org,stefan@webrtc.org,srte@webrtc.org

Change-Id: Ia8a273eb9e92b7d0d960c49658c228208170962d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8415
Reviewed-on: https://webrtc-review.googlesource.com/47560
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21877}
2018-02-02 16:55:17 +00:00
Sebastian Jansson
c5017136c7 Split end to end tests into more cohesive test sets.
end_to_end_tests.cc was over 5000 lines and covered many different
areas in it's testing. In this change it is separated into multiple
smaller test sets separated by the functionality they are testing. The
reasoning behind this is that the fact that a test is working end to end
should be secondary to what functionality the test is actually testing.

A slight functional change is that for some of the tests the
parametrization over round robin pacing being controlled with a field
trial is removed since they are simple enough that they should not be
affected by the pacing method.

Bug: None
Change-Id: I4b7eba80fc142ecfc8fa642dab9b6f587d914048
Reviewed-on: https://webrtc-review.googlesource.com/46143
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21876}
2018-02-02 16:09:16 +00:00
Sebastian Jansson
0cbcba7ea0 Moved congestion controller to task queue.
The goal of this work is to make it easier to experiment with the
bandwidth estimation implementation. For this reason network control
functionality is moved from SendSideCongestionController(SSCC),
PacedSender and BitrateController to the newly created
GoogCcNetworkController which implements the newly created
NetworkControllerInterface. This allows the implementation to be
replaced at runtime in the future.

This is the first part of a split of a larger CL, see:
https://webrtc-review.googlesource.com/c/src/+/39788/8
For further explanations.

Bug: webrtc:8415
Change-Id: I770189c04cc31b313bd4e57821acff55fbcb1ad3
Reviewed-on: https://webrtc-review.googlesource.com/43840
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21868}
2018-02-02 12:55:47 +00:00
Qingsi Wang
970b088878 Reland "Break up rtc_event_log_api to solve circular dependencies."
This is a reland of 001546da953275c7a39eb220592b440c9b47d756
Original change's description:
> Break up rtc_event_log_api to solve circular dependencies.
>
> The original rtc_event_log_api is refactored to a pure API target plus
> multiple targets coupled with WebRTC implementations.
>
> Bug: None
> Change-Id: Iab9eee3f7bf4228c52d94a5f26fc39bb99b5033f
> Reviewed-on: https://webrtc-review.googlesource.com/43247
> Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
> Reviewed-by: Björn Terelius <terelius@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Commit-Queue: Qingsi Wang <qingsi@google.com>
> Cr-Commit-Position: refs/heads/master@{#21811}

TBR=pthatcher@webrtc.org,deadbeef@webrtc.org,terelius@webrtc.org,stefan@webrtc.org

Bug: None
Change-Id: I3e7213733741cbfd5dd0076f32209e6bc42a0647
Reviewed-on: https://webrtc-review.googlesource.com/46900
Commit-Queue: Qingsi Wang <qingsi@google.com>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21862}
2018-02-01 22:47:52 +00:00
Bjorn Terelius
edab3011fa Remove webrtc::test::InitFieldTrialsFromString(const std::string&).
This is done to solve a problem where a string literal is implicitly cast
to a temporary std::string when calling webrtc::test::InitFieldTrialsFromString
which passes a pointer to the internal representation to
webrtc::field_trial::InitFieldTrialFromString(char*). This pointer is
stored for later use, but the temporary std::string is destroyed as soon
as the function returns.

Using webrtc::field_trial::InitFieldTrialFromString(char*) instead,
avoids the implicit casts (but the caller still needs to ensure that
the char* outlives the program). The validation previously done by
webrtc::test::InitFieldTrialsFromString can now be done by manually
calling webrtc::test::ValidateFieldTrialsStringOrDie(const std::string&).

Add system_wrappers:field_trial_default as a direct dependency to
various targets to allow including the field_trials_default.h header.

Bug: webrtc:8812
Change-Id: Ib5a641ea255b1c16a8f7f35e1fe67f6c38a61da6
Reviewed-on: https://webrtc-review.googlesource.com/46141
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21856}
2018-02-01 19:47:41 +00:00
Sebastian Jansson
56fa050125 Improved accuracy of packet loss calculation in tests.
Test of packet loss used a simplified calculation of lost packets and
loss ratio. Changed the calculation to be more accurate. This protects
against triggering for future implementations with more precise
calculations.

Bug: webrtc:8415
Change-Id: I721dc83954e8738fdf8ea729dee4cc8b8c8fa091
Reviewed-on: https://webrtc-review.googlesource.com/46740
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21845}
2018-02-01 14:00:08 +00:00
Sergey Silkin
956b3068ba Reland "Set actual resolution for coded frame in VP9 enc wrapper."
This is a reland of 4e53a0f384f46816a56f7d1aa9811e87b9c367d9.

Original change's description:
> Set actual resolution for coded frame in VP9 enc wrapper.
>
> This fix the mismatch of resolution VP9 wrapper set for coded frame with
> its actual resolution.
>
> Bug: webm:1485, webrtc:5749
> Change-Id: Ie1225d8f3a3d00e66229a1a79858d0a89b3d5fae
> Reviewed-on: https://webrtc-review.googlesource.com/46040
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21819}

TBR=brandtr@webrtc.org,asapersson@webrtc.org

Bug: webm:1485, webrtc:5749
Change-Id: I63124b45af678dc66f693fda96e1f347fdbc0ef1
Reviewed-on: https://webrtc-review.googlesource.com/46621
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21838}
2018-02-01 10:40:01 +00:00
Jiawei Ou
3587b8302a Make RTCP report interval configurable
Bug: webrtc:8789
Change-Id: I79c9132123c946b030ed79c647b4329e81d6e6ae
Reviewed-on: https://webrtc-review.googlesource.com/43201
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21837}
2018-02-01 10:12:11 +00:00
Niels Möller
96d7f76036 Fix spelling of (internal) method name UpdateChannelParameters.
Bug: none
Change-Id: I17baa343b144d8619ef4389f137dbe6b91cf7b98
Reviewed-on: https://webrtc-review.googlesource.com/46020
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21830}
2018-01-31 14:26:49 +00:00
Oleh Prypin
bbf46c2753 Revert "Set actual resolution for coded frame in VP9 enc wrapper."
This reverts commit 4e53a0f384f46816a56f7d1aa9811e87b9c367d9.

Reason for revert: breaks downstream projects

Original change's description:
> Set actual resolution for coded frame in VP9 enc wrapper.
> 
> This fix the mismatch of resolution VP9 wrapper set for coded frame with
> its actual resolution.
> 
> Bug: webm:1485, webrtc:5749
> Change-Id: Ie1225d8f3a3d00e66229a1a79858d0a89b3d5fae
> Reviewed-on: https://webrtc-review.googlesource.com/46040
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21819}

TBR=brandtr@webrtc.org,asapersson@webrtc.org,ssilkin@webrtc.org

Change-Id: I122ce66ebf709125b3f927dd75fec25be7e1d525
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webm:1485, webrtc:5749
Reviewed-on: https://webrtc-review.googlesource.com/46620
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21824}
2018-01-31 10:54:20 +00:00
Mirko Bonadei
75df7282eb Revert "Break up rtc_event_log_api to solve circular dependencies."
This reverts commit 001546da953275c7a39eb220592b440c9b47d756.

Reason for revert: breaks downstream projects.

Original change's description:
> Break up rtc_event_log_api to solve circular dependencies.
> 
> The original rtc_event_log_api is refactored to a pure API target plus
> multiple targets coupled with WebRTC implementations.
> 
> Bug: None
> Change-Id: Iab9eee3f7bf4228c52d94a5f26fc39bb99b5033f
> Reviewed-on: https://webrtc-review.googlesource.com/43247
> Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
> Reviewed-by: Björn Terelius <terelius@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Commit-Queue: Qingsi Wang <qingsi@google.com>
> Cr-Commit-Position: refs/heads/master@{#21811}

TBR=phoglund@webrtc.org,deadbeef@webrtc.org,terelius@webrtc.org,stefan@webrtc.org,pthatcher@google.com,pthatcher@webrtc.org,qingsi@google.com

Change-Id: I82540eac176c4abfb7e50dc51671585b32a1bace
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: None
Reviewed-on: https://webrtc-review.googlesource.com/46581
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21823}
2018-01-31 09:39:44 +00:00
Sergey Silkin
4e53a0f384 Set actual resolution for coded frame in VP9 enc wrapper.
This fix the mismatch of resolution VP9 wrapper set for coded frame with
its actual resolution.

Bug: webm:1485, webrtc:5749
Change-Id: Ie1225d8f3a3d00e66229a1a79858d0a89b3d5fae
Reviewed-on: https://webrtc-review.googlesource.com/46040
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21819}
2018-01-31 08:39:19 +00:00
Anders Carlsson
dd8c16574e Enable building WebRTC without built-in software codecs
This CL adds a GN build flag to include builtin software codecs
(enabled by default).

When setting the flag to false, libvpx can also be excluded. The
benefit is that the resulting binary is smaller.

Replaces https://webrtc-review.googlesource.com/c/src/+/29203

Bug: webrtc:7925
Change-Id: Id330ea8a43169e449ee139eca18e4557cc932e10
Reviewed-on: https://webrtc-review.googlesource.com/36340
Commit-Queue: Anders Carlsson <andersc@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21818}
2018-01-31 08:33:59 +00:00
Qingsi Wang
001546da95 Break up rtc_event_log_api to solve circular dependencies.
The original rtc_event_log_api is refactored to a pure API target plus
multiple targets coupled with WebRTC implementations.

Bug: None
Change-Id: Iab9eee3f7bf4228c52d94a5f26fc39bb99b5033f
Reviewed-on: https://webrtc-review.googlesource.com/43247
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Qingsi Wang <qingsi@google.com>
Cr-Commit-Position: refs/heads/master@{#21811}
2018-01-30 17:54:06 +00:00
Emircan Uysaler
d7ae3c34e5 Reland "Rename stereo video codec to multiplex"
This is a reland of bbdabe50db0cf09f6007dda12a6476dc4602b174.

Original change's description:
> Rename stereo video codec to multiplex
>
> This CL only does the rename from"stereo" to multiplex". With this we have a
> better name that doesn't clash with audio's usage of stereo.
>
> Bug: webrtc:7671
> Change-Id: Iebc3fc20839025f1bc8bcf0e16141bf9744ef652
> Reviewed-on: https://webrtc-review.googlesource.com/43242
> Commit-Queue: Emircan Uysaler <emircan@webrtc.org>
> Reviewed-by: Niklas Enbom <niklas.enbom@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21769}

TBR=niklas.enbom@webrtc.org

Bug: webrtc:7671
Change-Id: I6f38dc46126f279f334d52b56339b40acdc30511
Reviewed-on: https://webrtc-review.googlesource.com/45820
Reviewed-by: Emircan Uysaler <emircan@webrtc.org>
Commit-Queue: Emircan Uysaler <emircan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21794}
2018-01-29 20:37:59 +00:00
Taylor Brandstetter
1204448a68 Revert "Reland "Rename stereo video codec to multiplex""
This reverts commit 4954a77cf81e6793245f52d485834acd3e6eab1c.

Reason for revert: Breaks downstream build which was depending on the name "kVideoCodecStereo". Will need to do some sort of trickery to make this change without breaking the relevant code. Sorry. :(

Original change's description:
> Reland "Rename stereo video codec to multiplex"
> 
> This is a reland of bbdabe50db0cf09f6007dda12a6476dc4602b174.
> This was reverted because of breaking internal build. I contacted sheriff
> and looked at logs but cannot find anything related to this CL. This was landed
> with #3850 build which caused exception, but 3847-3855 seem to all have failed.
> I am relanding to see if it will work this time or it will give some related
> error message that can guide me.
> 
> Original change's description:
> > Rename stereo video codec to multiplex
> >
> > This CL only does the rename from"stereo" to multiplex". With this we have a
> > better name that doesn't clash with audio's usage of stereo.
> >
> > Bug: webrtc:7671
> > Change-Id: Iebc3fc20839025f1bc8bcf0e16141bf9744ef652
> > Reviewed-on: https://webrtc-review.googlesource.com/43242
> > Commit-Queue: Emircan Uysaler <emircan@webrtc.org>
> > Reviewed-by: Niklas Enbom <niklas.enbom@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#21769}
> 
> TBR=niklas.enbom@webrtc.org
> 
> Bug: webrtc:7671
> Change-Id: I5934abad1ce28acf02842ea8ee2af7768a826eb8
> Reviewed-on: https://webrtc-review.googlesource.com/44520
> Reviewed-by: Emircan Uysaler <emircan@webrtc.org>
> Commit-Queue: Emircan Uysaler <emircan@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21780}

TBR=sprang@webrtc.org,niklas.enbom@webrtc.org,qiangchen@chromium.org,emircan@webrtc.org

Change-Id: I0a71327c2ddfdd030b1e058cd6a41b1689836719
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:7671
Reviewed-on: https://webrtc-review.googlesource.com/44621
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21783}
2018-01-27 00:45:20 +00:00
Emircan Uysaler
4954a77cf8 Reland "Rename stereo video codec to multiplex"
This is a reland of bbdabe50db0cf09f6007dda12a6476dc4602b174.
This was reverted because of breaking internal build. I contacted sheriff
and looked at logs but cannot find anything related to this CL. This was landed
with #3850 build which caused exception, but 3847-3855 seem to all have failed.
I am relanding to see if it will work this time or it will give some related
error message that can guide me.

Original change's description:
> Rename stereo video codec to multiplex
>
> This CL only does the rename from"stereo" to multiplex". With this we have a
> better name that doesn't clash with audio's usage of stereo.
>
> Bug: webrtc:7671
> Change-Id: Iebc3fc20839025f1bc8bcf0e16141bf9744ef652
> Reviewed-on: https://webrtc-review.googlesource.com/43242
> Commit-Queue: Emircan Uysaler <emircan@webrtc.org>
> Reviewed-by: Niklas Enbom <niklas.enbom@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21769}

TBR=niklas.enbom@webrtc.org

Bug: webrtc:7671
Change-Id: I5934abad1ce28acf02842ea8ee2af7768a826eb8
Reviewed-on: https://webrtc-review.googlesource.com/44520
Reviewed-by: Emircan Uysaler <emircan@webrtc.org>
Commit-Queue: Emircan Uysaler <emircan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21780}
2018-01-26 21:11:54 +00:00
Mirko Bonadei
65ce31158f Removing useless dependencies on //testing/gmock.
If a WebRTC build target requires gmock it has to include
test/gmock.h and just depend on //test:test_support.

Unfortunately //testtest_support was a leaky abstraction because it
wasn't propagating the correct -I compiler flag. To make everything
work, all the targets that use gmock started also to depend on
//testing/gmock (even if they were not including any gmock header
directly).

This CL makes //testtest_support propagate the include path up in the
dependency chain so it is possible to remove unused dependencies.

Note: all_dependent_configs should probably be used in the original
gmock target. There is an ongoing discussion about it. This CL solves
the problem on WebRTC side and it is forward compatible.

TBR=phoglund@webrtc.org

Bug: webrtc:8603
Change-Id: If08daf2ce9a6431a6e881a236743b4ec33b59ea7
Reviewed-on: https://webrtc-review.googlesource.com/44340
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21776}
2018-01-26 13:34:12 +00:00
Piotr Tworek
5e4833cc90 Add missing stdio.h header in files using scanf/sscanf function.
Various files in webrtc codebase use scanf/sscanf function without
including stdio.h header file which is supposed to define it. This
somehow works when using glibc, but fails with uClibc.

Bug: webrtc:8641
Change-Id: Ie4ae17af32b32ed8cea567166b6b0e5193966995
Reviewed-on: https://webrtc-review.googlesource.com/32261
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21775}
2018-01-26 13:15:52 +00:00
Ivo Creusen
6bc7bb659e Revert "Rename stereo video codec to multiplex"
This reverts commit bbdabe50db0cf09f6007dda12a6476dc4602b174.

Reason for revert: This breaks the internal build.

Original change's description:
> Rename stereo video codec to multiplex
> 
> This CL only does the rename from"stereo" to multiplex". With this we have a
> better name that doesn't clash with audio's usage of stereo.
> 
> Bug: webrtc:7671
> Change-Id: Iebc3fc20839025f1bc8bcf0e16141bf9744ef652
> Reviewed-on: https://webrtc-review.googlesource.com/43242
> Commit-Queue: Emircan Uysaler <emircan@webrtc.org>
> Reviewed-by: Niklas Enbom <niklas.enbom@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21769}

TBR=sprang@webrtc.org,niklas.enbom@webrtc.org,qiangchen@chromium.org,emircan@webrtc.org

Change-Id: Icf019cb09e07de45821d31d7d8ea7707d01346ee
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:7671
Reviewed-on: https://webrtc-review.googlesource.com/44360
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21774}
2018-01-26 12:44:54 +00:00
Emircan Uysaler
bbdabe50db Rename stereo video codec to multiplex
This CL only does the rename from"stereo" to multiplex". With this we have a
better name that doesn't clash with audio's usage of stereo.

Bug: webrtc:7671
Change-Id: Iebc3fc20839025f1bc8bcf0e16141bf9744ef652
Reviewed-on: https://webrtc-review.googlesource.com/43242
Commit-Queue: Emircan Uysaler <emircan@webrtc.org>
Reviewed-by: Niklas Enbom <niklas.enbom@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21769}
2018-01-25 23:16:04 +00:00
Åsa Persson
b9b07eaf28 Move stats for decoded frames per second from VCMTiming to ReceiveStatisticsProxy.
Bug: none
Change-Id: I631a2b1cb550dded6d1e1daf47ac35583298d30d
Reviewed-on: https://webrtc-review.googlesource.com/36121
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21757}
2018-01-25 09:15:31 +00:00
Emircan Uysaler
9bb8f0553d Cleanup of unused RTP structs and packetizer for stereo codec
This CL is a followup to https://webrtc-review.googlesource.com/c/src/+/38481.
With the new approach we can just use the generic RTP packetizer to pass frames
over the wire as the specific info is contained within the bitstream. This makes
the new codec more modular and reduces its footprint.

Bug: webrtc:7671
Change-Id: Ib07f72a9d338e3cbfdbf39cba9891a959b5f7552
Reviewed-on: https://webrtc-review.googlesource.com/43220
Reviewed-by: Niklas Enbom <niklas.enbom@webrtc.org>
Commit-Queue: Emircan Uysaler <emircan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21753}
2018-01-25 01:25:56 +00:00
Ying Wang
8ed653d1c4 Do not register VideoSendStream to PacketFeedbackObserver when the current FEC controller do not use Loss Vector Mask.
Bug: chromium:804865
Change-Id: Ib197ff05266a20b8358724e7d8bfe2b085a2de23
Reviewed-on: https://webrtc-review.googlesource.com/43123
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Ying Wang <yinwa@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21742}
2018-01-24 10:40:22 +00:00
philipel
d8f6c167bb Avoid infinite recursion if a RED packet encapsulate a RED packet.
Bug: None
Change-Id: Ife982f28637c7a1b5a4f06fa0446841d76da8392
Reviewed-on: https://webrtc-review.googlesource.com/40880
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21718}
2018-01-22 14:51:34 +00:00
Ying Wang
3b790f316c Make fec controller plug-able.
Bug: webrtc:8656
Change-Id: I3d42ffc92a7c95266e5d53bab03f388bd0de2592
Reviewed-on: https://webrtc-review.googlesource.com/39760
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Ying Wang <yinwa@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21710}
2018-01-22 11:48:16 +00:00
Bjorn Terelius
0a6a2b73a1 Remove dependency on system_wrappers from rtc_event_log.
Bug: webrtc:8111
Change-Id: Id9e2503b153bc7172e7a5e92f6becc791da0aadf
Reviewed-on: https://webrtc-review.googlesource.com/41261
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21698}
2018-01-19 18:04:03 +00:00
Seth Hampson
46e31ba5b5 Reland "Enables/disables simulcast streams by allocating a bitrate of 0 to the spatial layer."
This is a reland of 18c4261339dc76b220e7c805e36b4ea6f3dd161d
Original change's description:
> Enables/disables simulcast streams by allocating a bitrate of 0 to the spatial layer.
>
> Creates VideoStreams & VideoCodec.simulcastStreams with an active field, and then allocates 0 bitrate to simulcast streams that are inactive. This turns off the encoder for specific simulcast streams.
>
> Bug: webrtc:8653
> Change-Id: Id93b03dcd8d1191a7d3300bd77882c8af96ee469
> Reviewed-on: https://webrtc-review.googlesource.com/37740
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Seth Hampson <shampson@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21646}

TBR=sprang@webrtc.org,stefan@webrtc.org,deadbeef@webrtc.org

Bug: webrtc:8630
Change-Id: Ib3df6f9b7158bff362a7ec66fc57e368682c5846
Reviewed-on: https://webrtc-review.googlesource.com/40980
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Seth Hampson <shampson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21688}
2018-01-18 22:42:23 +00:00
Sebastian Jansson
a45c8da852 Removed GetPacingFactor from PacedSender.
GetPacingFactor exposed internal details that should not be relied upon.
In a later CL theese won't be available any more, this CL is in
preparation for that change.

The only usage was in video send stream tests. To keep the tests
working, they now access the internal video send stream directly. The
test code retrieves an optional that indicates whether the send stream
has overridden the pacing factor. This means the implementation
dependency between video send stream and video send stream tests is
increased. This is an improvement compared to depending on the paced
sender implementation.

Bug: webrtc:8415
Change-Id: Id357553692b3ff3283fa3b64da1b1ebb3c97f04d
Reviewed-on: https://webrtc-review.googlesource.com/39265
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21675}
2018-01-18 12:40:47 +00:00
Ilya Nikolaevskiy
2ffe3e80db Reland Use runtime enabled features API to enable dual stream mode
This is an unchanged patch after dependency fixes in downstream projects are implemented.

Original patch was reviewed here:
https://webrtc-review.googlesource.com/c/src/+/39008

TBR=phoglund@webrtc.org,ilnik@webrtc.org,nisse@webrtc.org,philipel@webrtc.org,lliuu@webrtc.org

Change-Id: I648bbf63d34282a48cabc854615005ec65b28cb3
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8287
Reviewed-on: https://webrtc-review.googlesource.com/40420
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21674}
2018-01-18 12:22:49 +00:00
Niels Möller
6539f69746 Add VideoSendStream::Config::EncoderSettings::experiment_cpu_load_estimator.
And wire it up to methods on RTCConfiguration, via MediaConfig::Video.

Bug: webrtc:8504
Change-Id: I30805ee20c11d1d2fe552eb81f16d514db0ba4a8
Reviewed-on: https://webrtc-review.googlesource.com/39786
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21670}
2018-01-18 10:42:07 +00:00
Ilya Nikolaevskiy
ad55676f73 Add logs in *_loopback tools in release builds
Bug: none
Change-Id: I2dc902a0643baa333b335374164c65878fb47a2b
Reviewed-on: https://webrtc-review.googlesource.com/40120
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21669}
2018-01-18 09:18:47 +00:00
Lu Liu
c1094eb81d Revert "Use runtime enabled features API to enable dual stream mode"
This reverts commit 6f011dfdd413a903dcdf5a23a49109e64432326d.

Reason for revert: Broke internal builds

Original change's description:
> Use runtime enabled features API to enable dual stream mode
> 
> Bug: webrtc:8287
> Change-Id: I1a366d959a8b7f2a704baa7ea8ace64c1c398d52
> Reviewed-on: https://webrtc-review.googlesource.com/39008
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21661}

TBR=phoglund@webrtc.org,ilnik@webrtc.org,nisse@webrtc.org,philipel@webrtc.org

Change-Id: I0af406066231b67dd0b8eb6808bdc3e3f77560b6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8287
Reviewed-on: https://webrtc-review.googlesource.com/40321
Reviewed-by: Lu Liu <lliuu@webrtc.org>
Commit-Queue: Lu Liu <lliuu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21663}
2018-01-17 19:45:48 +00:00
Ilya Nikolaevskiy
6f011dfdd4 Use runtime enabled features API to enable dual stream mode
Bug: webrtc:8287
Change-Id: I1a366d959a8b7f2a704baa7ea8ace64c1c398d52
Reviewed-on: https://webrtc-review.googlesource.com/39008
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21661}
2018-01-17 16:29:37 +00:00
Fredrik Solenberg
a8b7c7f4c6 Move remaining traces of VoiceEngine
- Move files from voice_engine/ to audio/.
- Rename voice_engine/utility.* to remix_resample.* since there are no other
  utilities in those files.
- Move test/mock_voe_channel_proxy.h to audio/.
- Removed voe_channel_id from Audio[Receive|Send]Stream::Config.
- Remove VoiceEngine* from AudioState::Config.
- Fix a few cpplint complaints which showed when moving files.

NOPRESUBMIT=true

Bug: webrtc:4690
Change-Id: Id266c822d956625c358fa5e193e6f4837164aef8
Reviewed-on: https://webrtc-review.googlesource.com/39268
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21657}
2018-01-17 13:27:47 +00:00
Lu Liu
0f17f9ce28 Revert "Enables/disables simulcast streams by allocating a bitrate of 0 to the spatial layer."
This reverts commit 18c4261339dc76b220e7c805e36b4ea6f3dd161d.

Reason for revert: Broke internal tests

Original change's description:
> Enables/disables simulcast streams by allocating a bitrate of 0 to the spatial layer.
> 
> Creates VideoStreams & VideoCodec.simulcastStreams with an active field, and then allocates 0 bitrate to simulcast streams that are inactive. This turns off the encoder for specific simulcast streams.
> 
> Bug: webrtc:8653
> Change-Id: Id93b03dcd8d1191a7d3300bd77882c8af96ee469
> Reviewed-on: https://webrtc-review.googlesource.com/37740
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Seth Hampson <shampson@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21646}

TBR=deadbeef@webrtc.org,sprang@webrtc.org,stefan@webrtc.org,shampson@webrtc.org

Change-Id: I0aeb743cbd2e8d564aa732c937587c25a4c49b09
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8653
Reviewed-on: https://webrtc-review.googlesource.com/39883
Reviewed-by: Lu Liu <lliuu@webrtc.org>
Commit-Queue: Lu Liu <lliuu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21647}
2018-01-17 00:28:27 +00:00