Commit Graph

5251 Commits

Author SHA1 Message Date
74e8df8feb Fix rtcp_sender to support sdes with 31 chunk
Previosly it supported up to only 15 chunks which is a limit for csrcs in an rtp packet.

BUG=None

Review-Url: https://codereview.webrtc.org/2758533002
Cr-Commit-Position: refs/heads/master@{#17274}
2017-03-16 15:04:08 +00:00
150708e061 Make ModuleRtpRtcpImpl member variables private.
This is a follow-up to https://codereview.webrtc.org/2747743002.

BUG=webrtc:7135

Review-Url: https://codereview.webrtc.org/2750283003
Cr-Commit-Position: refs/heads/master@{#17271}
2017-03-16 12:02:53 +00:00
9c192b2b06 Added locking when getting echo likelihood stats.
Currently no lock is taken when returning echo likelihood stats, which causes a race condition between the thread getting the stats and the thread running the echo detector. This CL resolves the issue by adding locking.

BUG=webrtc:7346

Review-Url: https://codereview.webrtc.org/2749973003
Cr-Commit-Position: refs/heads/master@{#17270}
2017-03-16 11:22:14 +00:00
299b67809a DxgiOutputDuplicator should initialize num_frames_captured_
Otherwise Check failed: !!last_frame_ == num_frames_captured_ > 0 (1 vs. 0) may
be triggered.

BUG=webrtc:7339

Review-Url: https://codereview.webrtc.org/2755493003
Cr-Commit-Position: refs/heads/master@{#17266}
2017-03-15 22:52:20 +00:00
4e713ff8e8 Use VPX_ERROR_RESILIENT_DEFAULT constant.
Replaces a hard-coded 1, we don't support old libvpx versions that don't
have this constant defined anymore, so this can be dropped.

BUG=webrtc:7349
R=marpan@google.com, marpan@webrtc.org

Review-Url: https://codereview.webrtc.org/2622633005 .
Cr-Commit-Position: refs/heads/master@{#17263}
2017-03-15 18:19:58 +00:00
e01326fbd7 Remove unused RealTimeTemporalLayers.
BUG=webrtc:7349
R=sprang@webrtc.org, marpan@webrtc.org

Review-Url: https://codereview.webrtc.org/2755663003 .
Cr-Commit-Position: refs/heads/master@{#17262}
2017-03-15 18:08:27 +00:00
14dc089fb0 Remove dead VP8SequenceCoder.
BUG=webrtc:7349
R=marpan@google.com, marpan@webrtc.org

Review-Url: https://codereview.webrtc.org/2753763004 .
Cr-Commit-Position: refs/heads/master@{#17261}
2017-03-15 17:53:15 +00:00
dbbaa2ad66 Revert of C++ porting of the initial python script for conversational speech generation. (patchset #2 id:100001 of https://codereview.webrtc.org/2740063004/ )
Reason for revert:
Even if the conversational speech tool is external and not a core part of webrtc, there are too many trybots failing.

Original issue's description:
> C++ porting of the initial python script for conversational speech generation.
>
> This CL removes the Python script and adds its C++ porting.
> The former was in its early stage and it has permanently been removed.
>
> BUG=webrtc:7218
> NOTRY=True
>
> Review-Url: https://codereview.webrtc.org/2740063004
> Cr-Commit-Position: refs/heads/master@{#17254}
> Committed: 0cf3aa6d0d

TBR=henrik.lundin@webrtc.org,kjellander@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:7218

Review-Url: https://codereview.webrtc.org/2753843002
Cr-Commit-Position: refs/heads/master@{#17257}
2017-03-15 15:19:25 +00:00
29f730ebd8 Release the critial section between recursive calls in FrameBuffer::NextFrame.
This is a revert of https://codereview.webrtc.org/2749563002 and a fix to not
keep the lock in between recursive calls.

BUG=webrtc:7331

Review-Url: https://codereview.webrtc.org/2750033002
Cr-Commit-Position: refs/heads/master@{#17256}
2017-03-15 15:10:08 +00:00
0cf3aa6d0d C++ porting of the initial python script for conversational speech generation.
This CL removes the Python script and adds its C++ porting.
The former was in its early stage and it has permanently been removed.

BUG=webrtc:7218
NOTRY=True

Review-Url: https://codereview.webrtc.org/2740063004
Cr-Commit-Position: refs/heads/master@{#17254}
2017-03-15 14:56:26 +00:00
919dce22d5 Return a long timeout value from TimeUntilNextProcess when the PacedSender is paused
BUG=webrtc:7335

Review-Url: https://codereview.webrtc.org/2746153002
Cr-Commit-Position: refs/heads/master@{#17252}
2017-03-15 14:45:36 +00:00
be35a008ef Revert of Save width/height of SPS nalus and restore them on the first packet of an IDR. (patchset #6 id:100001 of https://codereview.webrtc.org/2750633003/ )
Reason for revert:
Breaks build bots.

Original issue's description:
> Save width/height of SPS nalus and restore them on the first packet of an IDR.
>
> It appears that for some H264 streams that the width/height is not set for
> the first packet of the IDR but in the packet containing the SPS/PPS.
>
> BUG=chromium:698088, webrtc:7139
>
> Review-Url: https://codereview.webrtc.org/2750633003
> Cr-Commit-Position: refs/heads/master@{#17239}
> Committed: 620d75f5be

TBR=stefan@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:698088, webrtc:7139

Review-Url: https://codereview.webrtc.org/2754543005
Cr-Commit-Position: refs/heads/master@{#17250}
2017-03-15 14:13:17 +00:00
664fc8fa7b Fix broken test landed in r17243.
TBR=philipel@webrtc.org
NOTRY=true

BUG=webrtc:7347

Review-Url: https://codereview.webrtc.org/2751963002
Cr-Commit-Position: refs/heads/master@{#17244}
2017-03-15 12:07:24 +00:00
9ea46b5286 Ignore packets sent on old network route when receiving feedback.
BUG=webrtc:7347
R=philipel@webrtc.org

Review-Url: https://codereview.webrtc.org/2755553003 .
Cr-Commit-Position: refs/heads/master@{#17243}
2017-03-15 11:40:25 +00:00
620d75f5be Save width/height of SPS nalus and restore them on the first packet of an IDR.
It appears that for some H264 streams that the width/height is not set for
the first packet of the IDR but in the packet containing the SPS/PPS.

BUG=chromium:698088, webrtc:7139

Review-Url: https://codereview.webrtc.org/2750633003
Cr-Commit-Position: refs/heads/master@{#17239}
2017-03-15 09:51:11 +00:00
bc935b4c49 Ignore unmoved moved_rects in DxgiOutputDuplicator
I cannot even imagine this change is useful. But it consistently reduces average
capture time by 0.375% (4.07 -> 4.055), and average encode time by 0.313%
(8.042 -> 8.016) without other impacts. Considering this is a one-line change,
it's worthy to be added.

BUG=679523

Review-Url: https://codereview.webrtc.org/2743233002
Cr-Commit-Position: refs/heads/master@{#17235}
2017-03-15 00:27:58 +00:00
a613eb6bff Fixing a few tests for the upcoming Opus 1.2-alpha.
BUG=b/35415318

NOTRY=True

Review-Url: https://codereview.webrtc.org/2746763005
Cr-Commit-Position: refs/heads/master@{#17234}
2017-03-14 21:33:30 +00:00
275e2099ab Remove ReceiveCodec() getters from VideoCodingModule.
The getters are not used and the implementation cannot be guaranteed
to return a correct value except when called synchronously from
the decoding thread while decoding.

The methods as is imply that the implementation needs to offer some
sort of synchronization, and that's not desirable.

BUG=webrtc:7328
R=stefan@webrtc.org

Review-Url: https://codereview.webrtc.org/2741853008 .
Cr-Commit-Position: refs/heads/master@{#17233}
2017-03-14 18:55:19 +00:00
e851a9a763 Fixed problems in neteq when RTP and decoder timestamps increment with
different sample rate frequency.

BUG=webrtc:7327

Problems before the fix:
1. NetEqImpl::timestamp_ is inconsistent. Initially it is set to
the original RTP timestamp, but later gets updated with the
scaled timestamp.
2. NetEqImpl::InsertPacketInternal::main_timestamp is set with
the original RTP timestamp, but later gets compared with the
NetEqImpl::timestamp_ which may or may not be with the same
sample rate frequency and this results in major problems.
3. IncreaseEndTimestamp(main_timestamp - timestamp_) will be
incorrect when SSRC is changed and not the first packet.
4. delay_manager_->Update() may not be always invoked, since
the (main_timestamp - timestamp_) >= 0 will not be true when
the previous scaled timestamp_ is bigger than the main_timestamp
(current RTP timestamp) even if the current RTP timestamp is
bigger than the previous RTP timestamp.
5. delay_manager_->Update() parameters are main_timestamp
which increments with the RTP sample rate frequency and the
fs_hz_ which is the decoder sample rate frequency. When these
two frequencies are different as is the case with g.722, the
DelayManager::Update() will misfire and calculate incorrect
packet_len_ms and inter-arrival time (IAT) as a result. This
in effect will cause neteq to enter kPreemptiveExpand operation
and will keep expanding the jitter buffer even if the RTP packets
arrive with no jitter at all.

The fix corrects all these problems by making sure the
main_timestamp and the timestamp_ are always set with the scaled
timestamp and increment with the decoder sample rate frequency.

Review-Url: https://codereview.webrtc.org/2743063005
Cr-Commit-Position: refs/heads/master@{#17232}
2017-03-14 17:00:27 +00:00
cd386eb13f Delete support for sending RTCP RPSI and SLI messages.
BUG=webrtc:7338

Review-Url: https://codereview.webrtc.org/2746413003
Cr-Commit-Position: refs/heads/master@{#17229}
2017-03-14 15:54:43 +00:00
0a73564338 Change FrameBuffer::Stop to not require a critical section.
BUG=webrtc:7331

Review-Url: https://codereview.webrtc.org/2749563002
Cr-Commit-Position: refs/heads/master@{#17228}
2017-03-14 13:23:57 +00:00
d0a71ba1ae Updates to VCMDecodedFrameCallback, VideoReceiver and a few related classes/tests.
* The _receiveCallback member of VCMDecodedFrameCallback does actually not require locking now that the threading model is slightly clearer. Documentation and checks have been added.
* UserReceiveCallback() never returns null and must always be called on the decoder thread. Checks have been added and the two test suites that were failing to set this callback, have been fixed and a new mock class added.  (looks like sakal@ may have hit some issues with flaky tests there).
* Changed VcmPayloadSink to use move semantics which I suspect was the intention at the time the code was written (when we didn't have move semantics).
* Added thread checker to a couple of classes and started adding thread checks for known behavior.  There's more to be  done there.
* Remove the |_decoder| member variable in VideoReceiver. It is not needed and as it could be used, left us open to a race.
* TODOs added for places where we can reduce locking. I suspect that we can get away with not needing a lock around _codecDataBase in VideoReceiver once we've got a clear picture of the threading model and ensured that all adhere to it.

BUG=webrtc:7328

Review-Url: https://codereview.webrtc.org/2744013002
Cr-Commit-Position: refs/heads/master@{#17226}
2017-03-14 11:16:20 +00:00
c7daea8d6a Make AudioBuffer::InterleaveTo const
The only non-const operation was a one-time initialization of a member only used in this function. I've moved it to the ctor.

BUG=webrtc:5298

Review-Url: https://codereview.webrtc.org/2741733002
Cr-Commit-Position: refs/heads/master@{#17223}
2017-03-14 10:10:07 +00:00
cfd88bbe80 Fix AudioEncoderOpus::RecreateEncoderInstance() referring to old config_
BUG=webrtc:7334

Review-Url: https://codereview.webrtc.org/2742383002
Cr-Commit-Position: refs/heads/master@{#17222}
2017-03-14 09:50:46 +00:00
a33c62ee65 Add accessor functions for protected member variables of ModuleRtpRtcpImpl.
BUG=webrtc:7135

Review-Url: https://codereview.webrtc.org/2747743002
Cr-Commit-Position: refs/heads/master@{#17220}
2017-03-14 07:49:45 +00:00
a1896a649c iSAC fix entropy coder: Recently added DCHECK could in fact trigger
A DCHECK added in a recent bugfix, which asserted that a signed 64->32
bit cast did not overflow, has been found to not always pass. We fix
this by saturating.

BUG=chromium:693868

Review-Url: https://codereview.webrtc.org/2746903002
Cr-Commit-Position: refs/heads/master@{#17209}
2017-03-13 12:28:47 +00:00
7be1dcb98e Delete method ModuleRtpRtcpImpl::SendPayloadType.
This was a trivial delegation wrapper, with only a single use.

BUG=None

Review-Url: https://codereview.webrtc.org/2741413003
Cr-Commit-Position: refs/heads/master@{#17205}
2017-03-13 12:09:27 +00:00
a2b2f6fe96 Remove dead test code and fix usage print-out for other tests
BUG=none

Review-Url: https://codereview.webrtc.org/2744213002
Cr-Commit-Position: refs/heads/master@{#17204}
2017-03-13 11:39:33 +00:00
d0d08b1568 vp8_impl.cc: Apply boost on golden frames (under field trial).
BUG=webrtc:6634

Review-Url: https://codereview.webrtc.org/2724153003
Cr-Commit-Position: refs/heads/master@{#17202}
2017-03-13 10:43:40 +00:00
9a1604b027 Include the header <cmath>
The build breaks because there is no implementation of std::abs(double).

BUG=None
TBR=tkchin@webrtc.org

Review-Url: https://codereview.webrtc.org/2743063003
Cr-Commit-Position: refs/heads/master@{#17176}
2017-03-10 21:30:04 +00:00
95b27217f2 Mac: fix screen capture freezes when context menu popup in Chrome.
Previously we grab a run loop source and add a source with mode
kCFRunLoopDefaultMode. With this mode, it won't callback when context menu popup
(which needs the NSEventTrackingRunLoopMode), then screen capture can't get
refreshed frame with context menu until the context menu is gone.
The fix is to use kCFRunLoopComonModes, which includes default,modal and event
tracking modes by default.

BUG=chromium:697780

Review-Url: https://codereview.webrtc.org/2732393003
Cr-Commit-Position: refs/heads/master@{#17171}
2017-03-10 17:46:49 +00:00
144475b328 Speculative fix for division by zero in Vp8EncoderImpl.
BUG=chromium:597139
R=sprang@webrtc.org

Review-Url: https://codereview.webrtc.org/2743543004 .
Cr-Commit-Position: refs/heads/master@{#17167}
2017-03-10 14:08:26 +00:00
60dcda4943 Add option to disable EXPECT_EQ's in VideoProcessor integration tests.
Since HW codecs are not as well-behaved as SW codecs, we need a
way to disable the EXPECT_EQ's in the VideoProcessor integration tests
for the former. This CL introduces such an ability.

BUG=webrtc:6634

Review-Url: https://codereview.webrtc.org/2710913004
Cr-Commit-Position: refs/heads/master@{#17166}
2017-03-10 13:34:01 +00:00
b2def1d06f Add batch mode to VideoProcessor integration tests.
Prior to this CL, the encoding/decoding in the VideoProcessor integration
tests were run "online", in the sense that rate allocations could be
changed in between frames. This is useful for evaluating the rate control
of SW codecs, which is one of the reasons for the existence of these
integration tests in the first place.

This CL adds a batch mode, in which the tests are run "offline". The two
main differences to the original mode are: 1) rate control metrics are
calculated after the fact, and 2) no rate allocation changes are allowed
during the test. Difference 1) is the reason for this CL, as HW codecs
that are pipelining will not work well when rate control metrics are
calculated right after a frame has been sent for encode. Difference 2)
is a side effect of the introduction of the batch mode. If we want to
be able to support online rate allocation for pipelining HW codecs in
the future, this can be introduced by adding a delay between encoding
and rate allocation. This was not deemed necessary at this point in time,
and hence this CL does not do that.

The batch mode is only intended to be used for manual experimentation
on devices with HW codecs, and the integration tests running on the
bots should thus NOT use batch mode.

BUG=webrtc:6634

Review-Url: https://codereview.webrtc.org/2707023008
Cr-Commit-Position: refs/heads/master@{#17164}
2017-03-10 12:20:10 +00:00
31bbee73a0 mac: Fix screen capture for whole-desktop capture.
DisplayStream refresh rects are in display coordinates. When the whole screen is
being captured, the coordinates passed to the ScreenCapturerHelper need to be in
screen coordinates. This CL translates display coordinates to screen
coordinates for whole screen capture.

BUG=chromium:699672

Review-Url: https://codereview.webrtc.org/2740823002
Cr-Commit-Position: refs/heads/master@{#17153}
2017-03-09 21:19:03 +00:00
d64862ac1b Add back method CongestionController::GetTransportFeedbackObserver.
This is a partial revert of https://codereview.webrtc.org/2725823002/,
to not break downstream applications.

BUG=webrtc:7058

TBR=stefan@webrtc.org

Review-Url: https://codereview.webrtc.org/2745613002
Cr-Commit-Position: refs/heads/master@{#17152}
2017-03-09 19:45:55 +00:00
cb8c1467bd Add FullStack test for simulcast screenshare mode.
BUG=webrtc:4172

Review-Url: https://codereview.webrtc.org/2745523002
Cr-Commit-Position: refs/heads/master@{#17150}
2017-03-09 17:23:30 +00:00
61ce37e2e0 Mark |Clock*| as |const Clock*| (for some CongestionController and BWE related modules)
BUG=None

Review-Url: https://codereview.webrtc.org/2735423002
Cr-Commit-Position: refs/heads/master@{#17148}
2017-03-09 15:09:31 +00:00
b5feb2e025 Use pacing info in ProbeBitrateEstimator to validate probe results.
BUG=webrtc:6822

Review-Url: https://codereview.webrtc.org/2728553007
Cr-Commit-Position: refs/heads/master@{#17147}
2017-03-09 15:01:58 +00:00
5bbf43f9d4 Move delay_based_bwe_ into CongestionController
BUG=webrtc:7058

Review-Url: https://codereview.webrtc.org/2725823002
Cr-Commit-Position: refs/heads/master@{#17146}
2017-03-09 14:40:08 +00:00
551e984851 Make error reporting more detailed
In an attempt to help Kenny locate the evil Dr. Deo.

BUG=webrtc:7307

Review-Url: https://codereview.webrtc.org/2732193006
Cr-Commit-Position: refs/heads/master@{#17135}
2017-03-09 10:08:28 +00:00
1d395dfb36 Conversational Speech generator, main script with shell arguments
BUG=webrtc:7218
NOTRY=True

Review-Url: https://codereview.webrtc.org/2733863002
Cr-Commit-Position: refs/heads/master@{#17117}
2017-03-08 14:12:23 +00:00
a8d8aadba8 Refactor + enable GN check on video_coding_utility
To avoid the cyclic dependency

BUG=webrtc:6828
NOTRY=True
TBR=magjed@webrtc.org

Review-Url: https://codereview.webrtc.org/2717113002
Cr-Commit-Position: refs/heads/master@{#17116}
2017-03-08 13:42:26 +00:00
ec304f96b3 GetTransportFeedbackVector return vector with lost packets too, sorted by seq-num
1. GetTransportFeedbackVector will now return a vector which also explicitly states lost packets.
2. The returned vector is unsorted (uses default order - by sequence number). It's up to the users to sort otherwise, if they need a different order.

BUG=None

Review-Url: https://codereview.webrtc.org/2707383006
Cr-Commit-Position: refs/heads/master@{#17114}
2017-03-08 13:03:53 +00:00
34b7a91862 Enable GN check for webrtc/modules/video_processing
BUG=webrtc:6828
NOTRY=True

Review-Url: https://codereview.webrtc.org/2719753002
Cr-Commit-Position: refs/heads/master@{#17106}
2017-03-08 09:41:14 +00:00
9fa7e4a0ac Fix error handling in X11 screen capturer
Previusly errors from XServerPixelBuffer::CaptureRect() were not always
handled, which results in a black frame returned from the capturer
instead of an error.

BUG=webrtc:7305

Review-Url: https://codereview.webrtc.org/2738513005
Cr-Commit-Position: refs/heads/master@{#17101}
2017-03-08 01:02:20 +00:00
cb9ba301f0 Perform probing on network route change.
BUG=webrtc:7208

Review-Url: https://codereview.webrtc.org/2714503002
Cr-Commit-Position: refs/heads/master@{#17096}
2017-03-07 14:30:59 +00:00
57f19cc0cd Drop VP8 frames in case of duplicates in RtpFrameReferenceFinder.
BUG=webrtc:5514

Review-Url: https://codereview.webrtc.org/2734453002
Cr-Commit-Position: refs/heads/master@{#17090}
2017-03-07 11:54:05 +00:00
21dc1890f4 Replace Clock::CurrentNtp with Clock::CurrentNtpTime
CurrentNtp return time by taking two output parameters by reference
(also breaks style guide)
CurrentNtpTime treat ntp time as single entity and returns it using NtpTime structure.
(making interface clearer)

BUG=None

Review-Url: https://codereview.webrtc.org/2733823002
Cr-Commit-Position: refs/heads/master@{#17088}
2017-03-07 10:51:09 +00:00
17b958c041 Support pipelining codecs in VideoProcessor.
This CL removes most of the global frame state in VideoProcessor and
replaces that with a vector of frame states. This is useful for pipelining
codecs, where the encoded/decoded frame may not be immediately outputted
after it has been sent to the codec.

The callers (VideoProcessorIntegrationTest and video_quality_measurement)
still call VideoProcessor in a sequential fashion. A follow-up CL will be
submitted that enables batch mode in VideoProcessorIntegrationTest.

Note that VideoProcessor is still not thread safe. Currently, we can run
fairly well on Android due to the synchronicity of our MediaCodec wrapper,
but we still cannot run on iOS due to async issues. This will be fixed in
the future.

BUG=webrtc:6634

Review-Url: https://codereview.webrtc.org/2711133002
Cr-Commit-Position: refs/heads/master@{#17084}
2017-03-07 09:41:43 +00:00