Commit Graph

55 Commits

Author SHA1 Message Date
d3a4ebe332 Control rtt_mult addition cap via experiment.
Bug: webrtc:10717
Change-Id: I68f7d8216e1a1611e692dd82ba96890cad98c7de
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/140284
Commit-Queue: Michael Horowitz <mhoro@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28191}
2019-06-07 09:43:26 +00:00
e0f370471a Add cap to video jitter buffer size/latency in experiment branches only.
Bug: webrtc:10664
Change-Id: I03762c8b318f26f2689e89545aa8cc8e5b4a4329
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138081
Commit-Queue: Michael Horowitz <mhoro@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28155}
2019-06-04 15:50:27 +00:00
2799e63bfb Add sizes of spatial layer frames to EncodedImage
WebRTC combines VP9 SVC spatial layer frames into superframe and passes
it to a decoder. The chromium HW VP9 decoder (wrapper) needs to know
location of each spatial layer frame in the frame buffer. To provide
decoder with such information this CL:
- Adds Set/SpatialLayerFrameSize methods to EncodedImage.
- Sets size of each spatial layer frame on superframe at assembly stage.

Bug: webrtc:10495
Change-Id: I68c3c0d668c67dfa1740e004059d860dd98f67f9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/136922
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28032}
2019-05-23 07:16:42 +00:00
4ed7e511f6 Revert "Add ability to cap the video jitter estimate to a max value."
This reverts commit a8ae407a480a2a9982eecf9e3a9b10da5373cd9a.

Reason for revert: This CL incorrectly affects non-experiment branch.  A new CL affecting only the experiment will be uploaded.

Original change's description:
> Add ability to cap the video jitter estimate to a max value.
>
> Bug: webrtc:10572
> Change-Id: I21112824dc02afa71db61bb8c2f02723e8b325b6
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133963
> Commit-Queue: Michael Horowitz <mhoro@webrtc.org>
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27744}

TBR=stefan@webrtc.org,mhoro@webrtc.org

Bug: webrtc:10572
Change-Id: I4af334168ca70ecfae7fd18fc7c852819a98d866
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138063
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Michael Horowitz <mhoro@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28025}
2019-05-22 15:07:33 +00:00
cd936fdba5 Wait for keyframe after decoding error.
Bug: chromium:936715
Change-Id: I0a51c8fa0025cb0f8e9afcbe8d8e4a84c2709ecf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134960
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27827}
2019-05-02 12:52:55 +00:00
d9c2d94620 Move ownership of VCMJitterEstimator to FrameBuffer
Bug: webrtc:7408
Change-Id: I8b33ead80abff1e84ae0b223e108266f71f03e2f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134180
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27823}
2019-05-02 10:57:04 +00:00
a8ae407a48 Add ability to cap the video jitter estimate to a max value.
Bug: webrtc:10572
Change-Id: I21112824dc02afa71db61bb8c2f02723e8b325b6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133963
Commit-Queue: Michael Horowitz <mhoro@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27744}
2019-04-24 16:03:15 +00:00
b4a70ed643 Fix potential crash in FrameBuffer::IsCompleteSuperFrame
According to crash reports, crash happens at the line with nothing but
|next_frame->second.frame->is_last_spatial_layer|.

Probably, |frames_| contains entries with empty frame unique_ptr.
This CL adds checks to not dereference those empty pointers.

Bug: chromium:955040
Change-Id: I3060f9e1af8bfc3c8a079c14107b5b4a82f5d015
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133626
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27706}
2019-04-23 10:05:11 +00:00
11d0d7b945 Reland "Running FrameBuffer on task queue."
This is a reland of 13943b7b7f6d00568912b9969db2c7871d18e21f

Original change's description:
> Running FrameBuffer on task queue.
> 
> This prepares for running WebRTC in simulated time where event::Wait
> based timing doesn't work.
> 
> Bug: webrtc:10365
> Change-Id: Ia0f9b1cc8e3c8c27a38e45b40487050a4699d8cf
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129962
> 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@{#27422}

Bug: webrtc:10365
Change-Id: I412d3e0fe06c6dd57cdb42974f09e03f3a6ad038
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/131124
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@{#27572}
2019-04-11 15:41:28 +00:00
f87a7dfb42 Fix undefined behavior in FrameBuffer
Bug: none
Change-Id: I7ce6298a27dc9e79e5f5a85103b3f1dd7b4be71e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/131953
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27527}
2019-04-09 18:12:32 +00:00
1c747f5717 Preparing VideoReceiveStream for move to TaskQueue.
Extracting the work that's thread dependent from the work that will
also be done when using task queue.

Bug: webrtc:10365
Change-Id: I648796fe016c966c731c9b7f85d2a871c1f2a349
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/131241
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27454}
2019-04-04 17:01:42 +00:00
c680c4a807 Revert "Running FrameBuffer on task queue."
This reverts commit 13943b7b7f6d00568912b9969db2c7871d18e21f.

Reason for revert: Breaks chromium import bots:
https://ci.chromium.org/p/chromium/builders/webrtc.fyi/WebRTC%20Chromium%20FYI%20Android%20Tests%20%28dbg%29%20%28K%20Nexus5%29

First failure:
https://ci.chromium.org/p/chromium/builders/webrtc.fyi/WebRTC%20Chromium%20FYI%20Android%20Tests%20%28dbg%29%20%28K%20Nexus5%29/2794

Original change's description:
> Running FrameBuffer on task queue.
> 
> This prepares for running WebRTC in simulated time where event::Wait
> based timing doesn't work.
> 
> Bug: webrtc:10365
> Change-Id: Ia0f9b1cc8e3c8c27a38e45b40487050a4699d8cf
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129962
> 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@{#27422}

TBR=sprang@webrtc.org,philipel@webrtc.org,srte@webrtc.org

Change-Id: I198a91ec1707cc8752a7fe55caf0f172e1b8e60a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10365
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/131120
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27436}
2019-04-03 10:27:51 +00:00
13943b7b7f Running FrameBuffer on task queue.
This prepares for running WebRTC in simulated time where event::Wait
based timing doesn't work.

Bug: webrtc:10365
Change-Id: Ia0f9b1cc8e3c8c27a38e45b40487050a4699d8cf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129962
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@{#27422}
2019-04-02 18:34:59 +00:00
9d8eaac4ee Delete unneeded direct includes of common_types.h
And delete corresponding dependencies on :webrtc_common. After this
change, common_types.h is included directly only from code in the
following directories:

api/
api/video/
api/video_codecs/
common_video/libyuv/include/
media/base/
modules/remote_bitrate_estimator/
modules/rtp_rtcp/source/
modules/video_coding/codecs/vp9/

There remains plenty of indirect dependencies on the types declared in
common_types.h, but the fewer direct dependencies should make it
easier to find the proper place for each type.

Bug: webrtc:5876
Change-Id: I93e8f214025ecb613c19fdec2015bd3f96c59aae
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/130501
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27376}
2019-04-01 07:18:13 +00:00
48193b065a In FrameBuffer call stats callback's OnCompleteFrame once per superframe
Bug: webrtc:10461
Change-Id: Ib3b6aeb38cd68e73281f526f8d1a7d8a0b5b1cc6
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/128866
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27295}
2019-03-26 15:36:36 +00:00
1f850a6dc7 Reland "SeqNumUnwrapper::Unwrap now returns int64_t instead of uint64_t."
This reverts commit b5207b488b035eae4d11dfdcca9526d5a70c9c09.

Reason for revert: DecodedFramesHistory has now been updated.

Original change's description:
> Revert "SeqNumUnwrapper::Unwrap now returns int64_t instead of uint64_t."
> 
> This reverts commit b0f968a761b715da4cf81e4b9c3cab0ccd322cf2.
> 
> Reason for revert: Need to update DecodedFramesHistory to manage negative picture IDs.
> 
> Original change's description:
> > SeqNumUnwrapper::Unwrap now returns int64_t instead of uint64_t.
> > 
> > Bug: webrtc:10263
> > Change-Id: Idaeae6be01bd4eba0691226c958d70e114161ffd
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127295
> > Commit-Queue: Philip Eliasson <philipel@webrtc.org>
> > Reviewed-by: Johannes Kron <kron@webrtc.org>
> > Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#27129}
> 
> TBR=kwiberg@webrtc.org,eladalon@webrtc.org,terelius@webrtc.org,philipel@webrtc.org,kron@webrtc.org
> 
> Change-Id: I529bb0475bd21a80fa244278aff1fd912a85c169
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:10263
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127885
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Commit-Queue: Philip Eliasson <philipel@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27135}

TBR=kwiberg@webrtc.org,eladalon@webrtc.org,terelius@webrtc.org,philipel@webrtc.org,kron@webrtc.org

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

Bug: webrtc:10263
Change-Id: Id59e377010b5070dd37a7ece8df79b23af43835a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/128568
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27191}
2019-03-19 17:02:27 +00:00
b5207b488b Revert "SeqNumUnwrapper::Unwrap now returns int64_t instead of uint64_t."
This reverts commit b0f968a761b715da4cf81e4b9c3cab0ccd322cf2.

Reason for revert: Need to update DecodedFramesHistory to manage negative picture IDs.

Original change's description:
> SeqNumUnwrapper::Unwrap now returns int64_t instead of uint64_t.
> 
> Bug: webrtc:10263
> Change-Id: Idaeae6be01bd4eba0691226c958d70e114161ffd
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127295
> Commit-Queue: Philip Eliasson <philipel@webrtc.org>
> Reviewed-by: Johannes Kron <kron@webrtc.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27129}

TBR=kwiberg@webrtc.org,eladalon@webrtc.org,terelius@webrtc.org,philipel@webrtc.org,kron@webrtc.org

Change-Id: I529bb0475bd21a80fa244278aff1fd912a85c169
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10263
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127885
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27135}
2019-03-14 18:14:33 +00:00
b0f968a761 SeqNumUnwrapper::Unwrap now returns int64_t instead of uint64_t.
Bug: webrtc:10263
Change-Id: Idaeae6be01bd4eba0691226c958d70e114161ffd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127295
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Johannes Kron <kron@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27129}
2019-03-14 13:01:20 +00:00
493a650b1e Propagate base minimum delay from video jitter buffer to webrtc/api.
On api level two methods were added to api/media_stream_interface.cc on VideoSourceInterface,
GetLatency and SetLatency. Latency is measured in seconds, delay in milliseconds but both describes
the same concept.


Bug: webrtc:10287
Change-Id: Ib8dc62a4d73f63fab7e10b82c716096ee6199957
Reviewed-on: https://webrtc-review.googlesource.com/c/123482
Commit-Queue: Ruslan Burakov <kuddai@google.com>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26877}
2019-02-27 15:08:34 +00:00
fdfe1c96a3 Update jitter delay on per-superframe level from FrameBuffer
Current way with updates on each frame caused a bogus jitter estimate
and lots of dropped frames in unfiltered KSVC stream.

Bug: chromium:912122
Change-Id: I4a1af71a242af3f9b5f5a411b194331b2df24f68
Reviewed-on: https://webrtc-review.googlesource.com/c/117566
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26322}
2019-01-18 13:36:07 +00:00
173d198020 Revert "Ensure correct decoding for unfiltered KSVC streams"
This reverts commit cd7c21bfadf89771690579f958bc4580588229d1.

Reason for revert: Regression in VP9 tests on perf bots

Original change's description:
> Ensure correct decoding for unfiltered KSVC streams
> 
> Set render timestamp for all frames in the superframe.
> 
> Bug: chromium:912122
> Change-Id: Ic9604620da9fb4176ad5c21b95df47fca8ddea31
> Reviewed-on: https://webrtc-review.googlesource.com/c/116985
> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26247}

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

Change-Id: I2d137d36d343bc0204ab80edb3cd55a3f89bbc33
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:912122
Reviewed-on: https://webrtc-review.googlesource.com/c/117564
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26262}
2019-01-15 12:19:30 +00:00
e4b5023f65 Avoid repeated semi-expensive field_trials read in frame_buffer2.cc
Bug: webrtc:10202
Change-Id: Ib8bfe7c1d62bc5091a8bfb2ce137ba749f9042e6
Reviewed-on: https://webrtc-review.googlesource.com/c/117361
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26261}
2019-01-15 12:12:01 +00:00
cd7c21bfad Ensure correct decoding for unfiltered KSVC streams
Set render timestamp for all frames in the superframe.

Bug: chromium:912122
Change-Id: Ic9604620da9fb4176ad5c21b95df47fca8ddea31
Reviewed-on: https://webrtc-review.googlesource.com/c/116985
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26247}
2019-01-14 16:06:38 +00:00
13717842df Introduce DecodedFramesHistory class and use it in FrameBuffer
This is a space efficient way to store more records about decoded frames,
which is needed for long term references.

Bug: webrtc:9710
Change-Id: I051d59d34a966d48db011142466d9cd15304b7d9
Reviewed-on: https://webrtc-review.googlesource.com/c/116792
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26240}
2019-01-14 13:09:39 +00:00
9c843906ca Delete VCMEncodedFrame methods Buffer and MutableBuffer
Replaced by inherited method EncodedImage::data().

Bug: webrtc:9378
Change-Id: I4ec75148f578c72ffb407f9cbf6b4232cc9cfcf6
Reviewed-on: https://webrtc-review.googlesource.com/c/116962
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26212}
2019-01-11 10:10:12 +00:00
6551faf089 Refactor FrameBuffer to store decoded frames history separately
This will allow to increase the stored decoded frames history size and
optimize it to reduce memory consumption.

Bug: webrtc:9710
Change-Id: I82be0eb376c5d0b61ad5d754e6a37d606b4df29d
Reviewed-on: https://webrtc-review.googlesource.com/c/116686
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26200}
2019-01-10 15:11:15 +00:00
69321ddfb5 Make FrameBuffer support an unlimited number of dependents per frame
Bug: webrtc:10190
Change-Id: I59680ec0dc05bc77dcbef50ddbb83ce2bcd91f7e
Reviewed-on: https://webrtc-review.googlesource.com/c/116788
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26196}
2019-01-10 14:36:47 +00:00
61832dd018 Propagate spatial index to EncodedImage.
Set spatial index of assembled VP9 picture equal to spatial index of
its top spatial layer frame.

Bug: webrtc:10151
Change-Id: Iae40505864b14b01cc6787f8da99a9e3fe283956
Reviewed-on: https://webrtc-review.googlesource.com/c/115280
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26075}
2018-12-20 15:21:22 +00:00
5546aef682 Vp9 flexible mode fixes
- Enable vp9 flexible mode in VideoEngine if 3 spatial layers are set.
- Enable flexible mode in loopback tools and quality tests.
- Reset first active spatial layer on keyframe in encoder.
- Ensure duplicate references are not set by the sender in video header.
- Set references manually for flexible mode in vp9 encoder.
- Delay new activated layers until next base layer frame.
- On receive side put each spatial layer as a separate frame to FrameBuffer
  and return several frames combined from FrameBuffer.

Bug: webrtc:10049,webrtc:9794,webrtc:9784
Change-Id: I01e69f134cc145deba666ccc92deb1d37a324ede
Reviewed-on: https://webrtc-review.googlesource.com/c/112289
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25895}
2018-12-04 15:36:28 +00:00
3e70781361 [Cleanup] Add missing #include. Remove useless ones. IWYU part 2.
This is a follow-up to
https://webrtc-review.googlesource.com/c/src/+/106280.
This time the whole code base is covered.
Some files may have not been fixed though, whenever the IWYU tool
was breaking the build.

Bug: webrtc:8311
Change-Id: I2c31f552a87e887d33931d46e87b6208b1e483ef
Reviewed-on: https://webrtc-review.googlesource.com/c/111965
Commit-Queue: Yves Gerey <yvesg@google.com>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25830}
2018-11-28 18:25:07 +00:00
e6a2d94eca Clear FrameBuffer if there were no frames received for 10 minutes
This is a workaround for the case when there are no video frames in a
call for a very long time, such that RTP timestamps wraparound and
FrameBuffer can't figure out if the frame is older or newer.

Bug: webrtc:9974
Change-Id: Ie1eaa4938813dbbd637ddcbe7ff118ead2bfa4a9
Reviewed-on: https://webrtc-review.googlesource.com/c/109882
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25548}
2018-11-07 15:09:11 +00:00
c572ff3c71 Add default constructor for rtc::Event
Bug: webrtc:9962
Change-Id: Icaa91e657e6881fcb1553f354c07866109a0ea68
Reviewed-on: https://webrtc-review.googlesource.com/c/109500
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25535}
2018-11-07 08:57:50 +00:00
6d2165036c Don't decode frames with an older timestamp than the last decoded timestamp.
This change prevents decoding corruption by not allowing keyframes with a
newer frame id but an older timestamp to be decoded. This does not handle
reordering well.

Bug: none
Change-Id: I4a67ca84ee86a782da74a10530c531d893d3bd3c
Reviewed-on: https://webrtc-review.googlesource.com/c/107304
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25292}
2018-10-22 13:11:46 +00:00
f9fc171568 Add rtt_mult_experiment to evaluate video robustness vs. latency
Bug: webrtc:9670
Change-Id: Idb4ca130bfa652b2d0bddb5bee9ed8e34c97150a
Reviewed-on: https://webrtc-review.googlesource.com/96060
Commit-Queue: Michael Horowitz <mhoro@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24457}
2018-08-27 15:51:52 +00:00
2377588c82 Add accessor methods for RTP timestamp of EncodedImage.
Intention is to make the member private, but downstream callers
must be updated to use the accessor methods first.

Bug: webrtc:9378
Change-Id: I3495bd8d545b7234fbea10abfd14f082caa420b6
Reviewed-on: https://webrtc-review.googlesource.com/82160
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24352}
2018-08-21 09:15:51 +00:00
52f53d5419 Revert "Add Timestamp accessor methods to the EncodedImage class."
This reverts commit f34d467b03da4f20a1d036a20966fcad43d2433f.

Reason for revert: Seems to break downstream project.

Original change's description:
> Add Timestamp accessor methods to the EncodedImage class.
> 
> Bug: webrtc:9378
> Change-Id: I59bf14f631f92f0f4e05f60d4af25641a23a53f9
> Reviewed-on: https://webrtc-review.googlesource.com/82100
> Reviewed-by: Stefan Holmer <stefan@webrtc.org>
> Reviewed-by: Philip Eliasson <philipel@webrtc.org>
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#23734}

TBR=brandtr@webrtc.org,nisse@webrtc.org,stefan@webrtc.org,philipel@webrtc.org

Change-Id: I3aa0c0119426886bc583c918aae862eb7f4b6b63
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9378
Reviewed-on: https://webrtc-review.googlesource.com/85600
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23739}
2018-06-26 11:52:45 +00:00
f34d467b03 Add Timestamp accessor methods to the EncodedImage class.
Bug: webrtc:9378
Change-Id: I59bf14f631f92f0f4e05f60d4af25641a23a53f9
Reviewed-on: https://webrtc-review.googlesource.com/82100
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23734}
2018-06-26 09:40:18 +00:00
0040b66ad3 Replace rtc::Optional with absl::optional
This is a no-op change because rtc::Optional is an alias to absl::optional

This CL generated by running script from modules with parameters
'pacing video_coding congestion_controller remote_bitrate_estimator':

find $@ -type f \( -name \*.h -o -name \*.cc \) \
-exec sed -i 's|rtc::Optional|absl::optional|g' {} \+ \
-exec sed -i 's|rtc::nullopt|absl::nullopt|g' {} \+ \
-exec sed -i 's|#include "api/optional.h"|#include "absl/types/optional.h"|' {} \+

find $@ -type f -name BUILD.gn \
-exec sed -r -i 's|"(../)*api:optional"|"//third_party/abseil-cpp/absl/types:optional"|' {} \+;

git cl format

Bug: webrtc:9078
Change-Id: I8ea501d7f1ee36e8d8cd3ed37e6b763c7fe29118
Reviewed-on: https://webrtc-review.googlesource.com/83900
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23640}
2018-06-18 10:24:48 +00:00
798b28279e Don't update internal state of the FrameBuffer2 when an undecodable frame is inserted.
Bug: chromium:844313
Change-Id: I034bcb47092815695084e37c81150bafbfbc6b9c
Reviewed-on: https://webrtc-review.googlesource.com/79944
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23577}
2018-06-12 09:26:09 +00:00
45a57fda24 Remove unused include from FrameBuffer2.
Bug: None
Change-Id: I766b430beb4f5ba35519931fbff19261a462f2c2
Reviewed-on: https://webrtc-review.googlesource.com/81184
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23517}
2018-06-05 11:33:20 +00:00
812ceafb5a Ensure render time is zero when playout delay is zero so that minimal latency in the render pipeline is ensured.
Bug: webrtc:9135
Change-Id: Id9ae8ec59536808ba8923c73dd46abfe3fa6fe79
Reviewed-on: https://webrtc-review.googlesource.com/75600
Commit-Queue: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23309}
2018-05-18 14:47:26 +00:00
be682d47ac Fix chromium warnings for SdpVideoFormat.
Bug: webrtc:163
Change-Id: I29ad3c00116692f047456df7721ba636bbb2ca89
Reviewed-on: https://webrtc-review.googlesource.com/64723
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22618}
2018-03-27 08:11:21 +00:00
9718711dee VideoStreamDecoderImpl implementation, part 1.
In this CL the OnFrame function is implemented.

Bug: webrtc:8909
Change-Id: I68488a033e86eadd0b16d091faad14e9cda7cc36
Reviewed-on: https://webrtc-review.googlesource.com/64121
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22583}
2018-03-23 13:58:55 +00:00
0fa82a60e9 Moved FrameKey to api/video/encoded_frame.h and renamed it to VideoLayerFrameId.
Since we want the VideoStreamDecoder to callback with the last
continuous frame we need to move the FrameKey into the public API.

Bug: webrtc:8909
Change-Id: I39634145d848b8163778e31a1e0d04d91f9bbeb8
Reviewed-on: https://webrtc-review.googlesource.com/60864
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22495}
2018-03-19 15:13:11 +00:00
9771c5050d Clear the FrameBuffer if it's full and a keyframe is being inserted.
Bug: webrtc:7705, webrtc:8593, chromium:706599, chromium:807624
Change-Id: Ie4e3e217bc2930fe511f8b6ad3a36afed484ab5f
Reviewed-on: https://webrtc-review.googlesource.com/59321
Reviewed-by: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22304}
2018-03-06 09:11:11 +00:00
0a9f6de446 Removed VCMTiming from RtpVideoStreamReceiver.
Bug: webrtc:8909
Change-Id: Ib42e4cc4c2252f04ea5f7d440352546d36d2899f
Reviewed-on: https://webrtc-review.googlesource.com/58740
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22224}
2018-02-28 11:31:51 +00:00
7eef00719b Fix typo in FrameBuffer
Bug: none
Change-Id: Ifc9a531da9460b7cac4aa71fb468c0881a663e94
Reviewed-on: https://webrtc-review.googlesource.com/58641
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22223}
2018-02-28 11:29:30 +00:00
8c4fe16e4c Make Frame buffer not drop frames unnecessary
Now VCMTiming::MaxWaitingTime will not clip negative values. Thus frame
buffer will be able to distinguish between late frames and when waiting
cycle was simply interrupted by a new inserted frame right before the
waiting timer would expire.

Bug: webrtc:8917
Change-Id: I6b253f459fcb3a346064a103cc92ee332b074e1b
Reviewed-on: https://webrtc-review.googlesource.com/57741
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22210}
2018-02-27 16:31:29 +00:00
e7c891f953 Renamed FrameObject to EncodedFrame.
The plan is to:
 1. Move FrameObject to api/video.
 2. Rename FrameObject to EncodedFrame.
 3. Move EncodedFrame out of the video_coding namespace.

This is the 2nd CL.

Bug: webrtc:8909
Change-Id: I5e76a0a3b306156b8bc1de67834b4adf14bebef9
Reviewed-on: https://webrtc-review.googlesource.com/56182
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22158}
2018-02-22 16:12:48 +00:00
1610f94ee3 Don't cast picture ids (of type int64_t) to int.
Also cleaned up a bit in RtpFrameReferenceFinder.

Bug: chromium:762556
Change-Id: Ib08d2e7ce4b146b359ce9ba823f3aa15776c71bc
Reviewed-on: https://webrtc-review.googlesource.com/32301
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21282}
2017-12-14 14:22:13 +00:00