895 Commits

Author SHA1 Message Date
Peter Boström
ca8352541a Move the decoder thread into VideoReceiveStream.
BUG=webrtc:5494
R=stefan@webrtc.org

Review URL: https://codereview.webrtc.org/1691793002 .

Cr-Commit-Position: refs/heads/master@{#11580}
2016-02-11 15:10:40 +00:00
Peter Boström
1f7d77f60c Extract send-side ViEReceiver calls.
Removes ViEChannel hop for DeliverRtcp and GetRemoteSsrc calls.

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

Review URL: https://codereview.webrtc.org/1687333002 .

Cr-Commit-Position: refs/heads/master@{#11576}
2016-02-11 14:30:24 +00:00
Peter Boström
8c66a00a37 Initialize VideoSendStream members in constructor.
Removes scoped_ptrs and provides clearer lifetime between objects.

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

Review URL: https://codereview.webrtc.org/1674663002 .

Cr-Commit-Position: refs/heads/master@{#11571}
2016-02-11 12:51:18 +00:00
tnakamura
3123cbc489 Associate "score" attribute with SSIM so that future perf graphs know that an increase in SSIM should be considered an improvement.
BUG=chromium:582009

Review URL: https://codereview.webrtc.org/1688503003

Cr-Commit-Position: refs/heads/master@{#11558}
2016-02-10 19:21:58 +00:00
torbjorng
448468d575 Experimental patch for adapting adaptation to CPU count on Mac.
BUG=

Review URL: https://codereview.webrtc.org/1665173002

Cr-Commit-Position: refs/heads/master@{#11553}
2016-02-10 16:12:04 +00:00
Stefan Holmer
58c664c13d Clean up of CongestionController.
Removes unused methods and moves out ViERemb to Call.

R=pbos@webrtc.org, solenberg@webrtc.org

Review URL: https://codereview.webrtc.org/1663413003 .

Cr-Commit-Position: refs/heads/master@{#11527}
2016-02-08 13:31:53 +00:00
Peter Boström
d1d66bab3d Remove ViEChannel calls for VideoReceiveStream.
Remove hops into ViEChannel for calls directly into RtpRtcp and
ViEReceiver from VideoReceiveStream.

Some calls are more complex and will be removed later.

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

Review URL: https://codereview.webrtc.org/1671893002 .

Cr-Commit-Position: refs/heads/master@{#11526}
2016-02-08 13:07:22 +00:00
Peter Boström
c6e16e3d91 Use a delayed encoder in GetStats test.
Guarantees seeing non-zero CpuOveruseMetrics stats.

BUG=
R=stefan@webrtc.org

Review URL: https://codereview.webrtc.org/1670763005 .

Cr-Commit-Position: refs/heads/master@{#11504}
2016-02-05 13:16:03 +00:00
Peter Boström
f751bf8679 Set VideoReceiveStream members in init list.
Removes scoped_ptrs and resets, preventing some heap allocation but also
overall showing that these objects won't be reconstructed on the fly.

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

Review URL: https://codereview.webrtc.org/1670123002 .

Cr-Commit-Position: refs/heads/master@{#11503}
2016-02-05 13:00:58 +00:00
Peter Boström
1d04ac6f29 Untangle ViEChannel and ViEEncoder.
Extracts shared members outside the two objects, removing PayloadRouter
from receivers and the VCM for ViEChannel from senders.

Removes Start/StopThreadsAndSetSharedMembers that was used to set the
shared state between them.

Also adding DCHECKs to document what's only used by the
sender/receiver side.

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

Review URL: https://codereview.webrtc.org/1654913002 .

Cr-Commit-Position: refs/heads/master@{#11500}
2016-02-05 10:25:52 +00:00
Peter Boström
e449915455 Measure encoding time on encode callbacks.
Permits measuring encoding time even when performed on another thread,
typically for hardware encoding, instead of assuming that encoding is
blocking the calling thread.

Permitted encoding time is increased for hardware encoders since they
can be timed to keep 30fps, for instance, without indicating overload.

Merges EncodingTimeObserver into EncodedFrameObserver to have one post-encode
callback.

BUG=webrtc:5042, webrtc:5132
R=asapersson@webrtc.org, mflodman@webrtc.org

Review URL: https://codereview.webrtc.org/1569853002 .

Cr-Commit-Position: refs/heads/master@{#11499}
2016-02-05 10:13:41 +00:00
stefan
ba4c0e45ff Add send-side BWE to WebRtcVoiceEngine under a finch experiment.
This adds negotiation of both transport sequence number and transport
feedback. Only offers transport seq num if the
WebRTC-Audio-SendSideBwe finch experiment is enabled.

TBR=mflodman@webrtc.org
BUG=webrtc:5263

Review URL: https://codereview.webrtc.org/1604563002

Cr-Commit-Position: refs/heads/master@{#11487}
2016-02-04 12:12:31 +00:00
asapersson
c2148a50d2 Integrate helper macros for calling histograms with different names (real-time vs screenshare and rampup metrics).
Sparse macro is replaced and new implementation in metrics.h is used.

BUG=webrtc:5283

Review URL: https://codereview.webrtc.org/1564923008

Cr-Commit-Position: refs/heads/master@{#11483}
2016-02-04 08:33:29 +00:00
danilchap
5c35cf9f8e Re-enable RestartingSendStreamPreservesRtpState.
based on https://codereview.webrtc.org/1457283002/
Packets allowed now to come out of order.

BUG=webrtc:3552
R=pbos@webrtc.org

Review URL: https://codereview.webrtc.org/1661923002

Cr-Commit-Position: refs/heads/master@{#11477}
2016-02-03 22:14:57 +00:00
jbauch
e03ac51aa1 Implement NullVideoDecoder to avoid crash on unsupported decoders.
There is a use case with external codec factories that only support
encoding but not decoding for a given type. This leads to a crash
due to null being registered as codec (after a DCHECK).

This CL adds a NullVideoDecoder that is used instead of the null to
not crash but log to LS_ERROR.

BUG=webrtc:5249

Review URL: https://codereview.webrtc.org/1657023002

Cr-Commit-Position: refs/heads/master@{#11475}
2016-02-03 13:51:56 +00:00
Stefan Holmer
10880011d9 Support multiple rtx codecs.
Adds negotiation of rtx codecs for red and vp9. To keep backwards
compatibility with older Chrome versions, this change includes two
hacks:
1. Red packets will be retransmitted over the rtx codec associated with
   vp8 if no rtx codec is associated with red. This is how Chrome does
   it today and ensures that we still can send red over rtx to older
   versions.

2. If rtx packets associated with the media codec (vp8/vp9 etc) are
   received and red has been negotiated, we will assume that the sender
   incorrectly has packetized red inside the rtx header associated with
   media. We will therefore restore it with the red payload type
   instead, which ensures that we can still receive rtx associated with
   red from old versions.

Offering multiple rtx codecs to older versions should not be a problem
since old versions themselves only try to negotiate rtx for vp8.

R=pbos@webrtc.org
TBR=mflodman@webrtc.org
BUG=webrtc:4024
TEST=Verified by running apprtc and emulating packet loss between Chrome with and without the patch.

Review URL: https://codereview.webrtc.org/1649493004 .

Cr-Commit-Position: refs/heads/master@{#11472}
2016-02-03 12:30:10 +00:00
Peter Boström
ed3277bf14 Deprecate VideoDecoder::Reset() and remove calls.
Removes calls to decoder reset and instead drops delta frames and
requests keyframes until one arrives.

BUG=webrtc:5475
R=stefan@webrtc.org
TBR=mflodman@webrtc.org

Review URL: https://codereview.webrtc.org/1647163002 .

Cr-Commit-Position: refs/heads/master@{#11460}
2016-02-02 14:40:13 +00:00
pbos
d8de1154c9 Remove mutable from rtc::CriticalSections.
A couple of mutables were added after last removal of mutables, so
removing those. rtc::CriticalSection is const-lockable.

BUG=
R=tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1652983002

Cr-Commit-Position: refs/heads/master@{#11447}
2016-02-01 17:00:59 +00:00
danilchap
34877eeec9 Revert of Added validation between RTP and RTCP timestamps (patchset #7 id:120001 of https://codereview.webrtc.org/1633843003/ )
Reason for revert:
May be the reason for mac_asan timeout

Original issue's description:
> Changed test to validate rtp timstamps not just in RTP packets but also in RTCP Sender Reports.
> Altered it to accept negative value since it is normal for RTCP packet coming before RTP packet to have slightly later time.
>
> BUG=webrtc:5433
>
> Committed: https://crrev.com/f4b9c775122b463db7eb2c4101603759a0d00caf
> Cr-Commit-Position: refs/heads/master@{#11417}

TBR=pbos@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:5433

Review URL: https://codereview.webrtc.org/1652973002

Cr-Commit-Position: refs/heads/master@{#11446}
2016-02-01 16:25:08 +00:00
stefan
bba9dec4d5 Use separate rtp module lists for send and receive in PacketRouter.
This makes it possible to handle send and receive streams with the same SSRC, which is currently the case in some peer connection tests.

Also moves sending transport feedback to the pacer thread.

BUG=webrtc:5263

Review URL: https://codereview.webrtc.org/1628683002

Cr-Commit-Position: refs/heads/master@{#11443}
2016-02-01 12:40:04 +00:00
sprang
e1f2f1fbb8 Unwrap timestamps in VideoAnalyzer
We have seen an instance of flakiness of the perf tests where it looked
like timestamp wraparound could be an issue. Better safe...

BUG=

Review URL: https://codereview.webrtc.org/1645463002

Cr-Commit-Position: refs/heads/master@{#11440}
2016-02-01 10:05:00 +00:00
Peter Boström
fb152707ed Replace const-reference with pointer in SendData.
This argument is never used as a reference and the pointer that's bound
to the const reference may be nullptr. This is undefined behavior and
barks under UBSan.

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

Review URL: https://codereview.webrtc.org/1642863003 .

Cr-Commit-Position: refs/heads/master@{#11418}
2016-01-28 18:12:09 +00:00
danilchap
f4b9c77512 Changed test to validate rtp timstamps not just in RTP packets but also in RTCP Sender Reports.
Altered it to accept negative value since it is normal for RTCP packet coming before RTP packet to have slightly later time.

BUG=webrtc:5433

Review URL: https://codereview.webrtc.org/1633843003

Cr-Commit-Position: refs/heads/master@{#11417}
2016-01-28 14:14:33 +00:00
hbos
bab934bffe H.264 video codec support using OpenH264 (http://www.openh264.org/) for encoding and FFmpeg (https://www.ffmpeg.org/) for decoding.
It works on all platforms except Android and iOS (FFmpeg limitation).

Implemented behind compile time flags, off by default.
The plan is to have it enabled in Chrome (see bug), but not in Chromium/webrtc by default.

Flags to turn it on:
- rtc_use_h264 = true
- ffmpeg_branding = "Chrome" (or other brand that includes H.264 decoder)

Tests using H264:
- video_loopback --codec=H264
- screenshare_loopback --codec=H264
- video_engine_tests (EndToEndTest.SendsAndReceivesH264)

NOTRY=True
BUG=500605, 468365
BUG=https://bugs.chromium.org/p/webrtc/issues/detail?id=5424

Review URL: https://codereview.webrtc.org/1306813009

Cr-Commit-Position: refs/heads/master@{#11390}
2016-01-27 09:36:07 +00:00
philipel
a2c55235ca Allow packets to be reordered in the fake network pipe.
BUG=

Review URL: https://codereview.webrtc.org/1606183002

Cr-Commit-Position: refs/heads/master@{#11384}
2016-01-26 16:42:00 +00:00
asapersson
28ba92731d Switch to use new implementation in metrics.h.
Sparse macro replaced for all video histograms that have a constant name.

BUG=webrtc:5283

Review URL: https://codereview.webrtc.org/1616153005

Cr-Commit-Position: refs/heads/master@{#11368}
2016-01-25 13:58:27 +00:00
pbos
5ad935cb56 Remove mutable from rtc::CriticalSection members.
rtc::CriticalSection is now lockable from const methods and no longer
need to remain mutable.

BUG=
R=tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1613643004

Cr-Commit-Position: refs/heads/master@{#11367}
2016-01-25 11:52:53 +00:00
Tommi
97888bd95a Swap use of CriticalSectionWrapper for rtc::CriticalSection in webrtc/video.
While doing this, I made a couple of minor changes:
* Removed unused variables (one lock and one video frame variable)
* Switched over to a scoped lock in remb.cc and removed an if() in a function where we can just return the expression being checked.

BUG=
R=mflodman@webrtc.org

Review URL: https://codereview.webrtc.org/1613053003 .

Cr-Commit-Position: refs/heads/master@{#11349}
2016-01-21 22:25:12 +00:00
terelius
429c345b02 Fixes a bug which incorrectly logs incoming RTCP as outgoing.
Adds logging to RTPSender and RTCPSender, pushing an event log pointer from Channel through ModuleRtpRtcpImpl to the Sender objects.

BUG=webrtc:4741

Review URL: https://codereview.webrtc.org/1571283002

Cr-Commit-Position: refs/heads/master@{#11336}
2016-01-21 13:42:10 +00:00
asapersson
d9f641e341 Reallocate encoded buffer size if needed. Initially set to the input image size.
Issue may occur for very small input images (e.g. 4x4) when encoded image length > input image size.

BUG=chromium:578193

Review URL: https://codereview.webrtc.org/1603643006

Cr-Commit-Position: refs/heads/master@{#11329}
2016-01-21 09:11:43 +00:00
stefan
32f81542c2 Support REMB in combination with send-side BWE.
BUG=webrtc:4173

Review URL: https://codereview.webrtc.org/1581113006

Cr-Commit-Position: refs/heads/master@{#11322}
2016-01-20 15:14:03 +00:00
Peter Boström
7b971e728b Remove extra_options from VideoCodec.
Constructing default options is racy when initializing multiple VP8
encoders in parallel. This is only used for VP8 temporal layers. Adding
TemporalLayerFactory to VP8 codec specifics instead of generic options.

Removes the last webrtc::Config uses/includes from video code.

Also removes VideoCodec equality operators which are no longer in use.

BUG=webrtc:5410
R=stefan@webrtc.org
TBR=mflodman@webrtc.org

Review URL: https://codereview.webrtc.org/1606613003 .

Cr-Commit-Position: refs/heads/master@{#11307}
2016-01-19 15:26:24 +00:00
Peter Boström
dd45eb6801 Remove use-after-free when quality tests stall.
Reduces TSan warnings when running screenshare FullStack tests.

BUG=
R=sprang@webrtc.org

Review URL: https://codereview.webrtc.org/1601033004 .

Cr-Commit-Position: refs/heads/master@{#11305}
2016-01-19 14:22:45 +00:00
Peter Boström
233bfd2da4 Move keyframe requests outside encoder mutex.
Enables faster keyframe requests since they are no longer blocked by
calls to the encoder.

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

Review URL: https://codereview.webrtc.org/1600553003 .

Cr-Commit-Position: refs/heads/master@{#11294}
2016-01-18 19:23:51 +00:00
Stefan Holmer
04cb763955 Add tests for verifying transport feedback for audio and video.
BUG=webrtc:5263
R=mflodman@webrtc.org

Review URL: https://codereview.webrtc.org/1589523002 .

Cr-Commit-Position: refs/heads/master@{#11255}
2016-01-14 19:34:39 +00:00
marpan
8432e1f4b8 Re-enable tests that failed under Linux_Msan.
Fixed in latest libvpx roll.
Keep EndToEndTest.TransportSeqNumOnAudioAndVideo disabled on
Win_DrMemory for now as it seems to time-out/too slow.

TBR=stefan@webrtc.org, kjellander@webrtc.org
BUG=webrtc:5402
NOTRY=True

Review URL: https://codereview.webrtc.org/1577313003

Cr-Commit-Position: refs/heads/master@{#11240}
2016-01-13 16:35:51 +00:00
Peter Kasting
6955870806 Convert channel counts to size_t.
IIRC, this was originally requested by ajm during review of the other size_t conversions I did over the past year, and I agreed it made sense, but wanted to do it separately since those changes were already gargantuan.

BUG=chromium:81439
TEST=none
R=henrik.lundin@webrtc.org, henrika@webrtc.org, kjellander@webrtc.org, minyue@webrtc.org, perkj@webrtc.org, solenberg@webrtc.org, stefan@webrtc.org, tina.legrand@webrtc.org

Review URL: https://codereview.webrtc.org/1316523002 .

Cr-Commit-Position: refs/heads/master@{#11229}
2016-01-13 00:26:55 +00:00
stefan
e74eef19bd Add CreateSend/ReceiveTransport() methods to CallTest.
This allows the test to create its own transports if it, for instance, needs to do demuxing.

BUG=webrtc:5416

Review URL: https://codereview.webrtc.org/1573453002

Cr-Commit-Position: refs/heads/master@{#11187}
2016-01-08 14:47:21 +00:00
asapersson
59bac1a4c5 Fix for stats updated twice when switching content type (realtime <-> screenshare). Add unittest.
BUG=

Review URL: https://codereview.webrtc.org/1543933004

Cr-Commit-Position: refs/heads/master@{#11180}
2016-01-08 07:36:06 +00:00
Stefan Holmer
9fea80f50d Add audio streams to CallTest and a first A/V call test.
Add audio send and receive streams to CallTest and call the necessary voice engine APIs for the streams to be usable. Verifies the implementation by adding a simple test which monitors outgoing packets and checks that both audio and video is being sent with transport sequence numbers.

Audio streams are using a fake audio device with file input.

The CallTest implementation is to a big degree based on call_perf_tests.cc and should in the future replace a lot of that code.

R=pbos@webrtc.org
TBR=kjellander@webrtc.org

BUG=webrtc:5263

Review URL: https://codereview.webrtc.org/1542653002 .

Cr-Commit-Position: refs/heads/master@{#11171}
2016-01-07 16:43:31 +00:00
Peter Boström
01f364ef06 Remove always-on options in OveruseFrameDetector.
BUG=webrtc:5132
R=asapersson@webrtc.org

Review URL: https://codereview.webrtc.org/1556703002 .

Cr-Commit-Position: refs/heads/master@{#11169}
2016-01-07 15:38:33 +00:00
kjellander
44cc795016 Roll chromium_revision 4df108a..2a70cb1 (367307:367468)
Mac 32-bit support has been gone in Chromium for a long time, but was
removed in https://codereview.chromium.org/1557823002. This called
for finally removing our Mac 32-bit builds, which was done in
http://crbug.com/574320.

Change log: 4df108a..2a70cb1
Full diff: 4df108a..2a70cb1

Changed dependencies:
* src/third_party/libvpx_new/source/libvpx: ecb8dff..a9dd8a7
* src/third_party/nss: aee1b12..225bfc3
DEPS diff: 4df108a..2a70cb1/DEPS

No update to Clang.

TBR=marpan@webrtc.org, stefan@webrtc.org,
BUG=webrtc:5401, webrtc:5402
NOTRY=True

Review URL: https://codereview.webrtc.org/1556273002

Cr-Commit-Position: refs/heads/master@{#11159}
2016-01-07 06:12:36 +00:00
Peter Boström
e2976c87f7 Remove DISABLED_ON_ macros.
Macro incorrectly displays DISABLED_ON_ANDROID in test names for
parameterized tests under --gtest_list_tests, causing tests to be
disabled on all platforms since they contain the DISABLED_ prefix rather
than their expanded variants.

This expands the macro variants to inline if they're disabled or not,
and removes building some tests under configurations where they should
fail, instead of building them but disabling them by default.

The change also removes gtest_disable.h as an unused include from many
other files.

BUG=webrtc:5387, webrtc:5400
R=kjellander@webrtc.org, phoglund@webrtc.org
TBR=henrik.lundin@webrtc.org

Review URL: https://codereview.webrtc.org/1547343002 .

Cr-Commit-Position: refs/heads/master@{#11150}
2016-01-04 21:44:16 +00:00
Peter Boström
13f61dfea5 Move fake-handle frame creation into test target.
Renames CreateFakeNativeHandleFrame to FakeNativeHandle::CreateFrame and
moves into test.gyp target 'fake_video_frames' which contains previous
frame_generator target.

Removes unused warnings from includers of
webrtc/test/fake_texture_frame.h which did not use the function above.

BUG=webrtc:5398
R=kjellander@webrtc.org
TBR=stefan@webrtc.org

Review URL: https://codereview.webrtc.org/1554223002 .

Cr-Commit-Position: refs/heads/master@{#11149}
2016-01-04 21:36:49 +00:00
danilchap
f6975f4613 [rtp_rtcp] Lint errors cleaned from rtp_utility
R=åsapersson
BUG=webrtc:5277

Review URL: https://codereview.webrtc.org/1539423003

Cr-Commit-Position: refs/heads/master@{#11131}
2015-12-28 18:18:52 +00:00
honghaiz
cfb7f01fd6 Disable VideoSendStreamTest.ReconfigureBitratesSetsEncoderBitratesCorrectly
due to flakiness on LinuxAsan.

BUG=webrtc:5382
TBR=kjellander@webrtc.org

Review URL: https://codereview.webrtc.org/1541923003

Cr-Commit-Position: refs/heads/master@{#11109}
2015-12-21 21:35:00 +00:00
stefan
ff483617a4 Step 1 to prepare call_test.* for combined audio/video tests.
Also move (and clean up includes) rampup_tests.* to webrtc/call in preparation for combined audio/video ramp-up tests.

No functional changes.

BUG=webrtc:5263

Review URL: https://codereview.webrtc.org/1537273003

Cr-Commit-Position: refs/heads/master@{#11101}
2015-12-21 11:14:05 +00:00
asapersson
53805324c0 Rename RTC_HISTOGRAM_* macros to RTC_HISTOGRAM_*_SPARSE_* to indicate that these are for infrequent updates.
This implementation will be replaced by a faster one and sparse will be removed.

BUG=webrtc:5283

Review URL: https://codereview.webrtc.org/1530913002

Cr-Commit-Position: refs/heads/master@{#11099}
2015-12-21 09:46:25 +00:00
Peter Boström
b7d9a97ce4 Expose codec implementation names in stats.
Used to distinguish between software/hardware encoders/decoders and
other implementation differences. Useful for tracking quality
regressions related to specific implementations.

BUG=webrtc:4897
R=hta@webrtc.org, mflodman@webrtc.org, stefan@webrtc.org

Review URL: https://codereview.webrtc.org/1406903002 .

Cr-Commit-Position: refs/heads/master@{#11084}
2015-12-18 15:01:23 +00:00
nisse
5a4ce2fd33 Deleted declaration of VideoCaptureInput::DeliverI420Frame
It appears unimplemented and unused.

BUG=

Review URL: https://codereview.webrtc.org/1539513002

Cr-Commit-Position: refs/heads/master@{#11071}
2015-12-17 17:37:26 +00:00