871 Commits

Author SHA1 Message Date
Henrik Kjellander
0f59a88b32 modules/video_processing: refactor interface->include + more.
Moved/renamed:
webrtc/modules/video_processing/main/interface -> webrtc/modules/video_processing/include
webrtc/modules/video_processing/main/source/* -> webrtc/modules/video_processing
webrtc/modules/video_processing/main/test/unit_test -> webrtc/modules/video_processing/test

No downstream code seems to use this module.

BUG=webrtc:5095
TESTED=git cl try -c --bot=android_compile_rel --bot=linux_compile_rel --bot=win_compile_rel --bot=mac_compile_rel --bot=ios_rel --bot=linux_gn_rel --bot=win_x64_gn_rel --bot=mac_x64_gn_rel --bot=android_gn_rel -m tryserver.webrtc
R=pbos@webrtc.org, stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10697}
2015-11-18 21:31:33 +00:00
Henrik Kjellander
2557b86e76 modules/video_coding refactorings
The main purpose was the interface-> include rename, but other files
were also moved, eliminating the "main" dir.

To avoid breaking downstream, the "interface" directories were copied
into a new "video_coding/include" dir. The old headers got pragma
warnings added about deprecation (a very short deprecation since I plan
to remove them as soon downstream is updated).

Other files also moved:
video_coding/main/source -> video_coding
video_coding/main/test -> video_coding/test

BUG=webrtc:5095
TESTED=Passing compile-trybots with --clobber flag:
git cl try --clobber --bot=win_compile_rel --bot=linux_compile_rel --bot=android_compile_rel --bot=mac_compile_rel --bot=ios_rel --bot=linux_gn_rel --bot=win_x64_gn_rel --bot=mac_x64_gn_rel --bot=android_gn_rel -m tryserver.webrtc

R=stefan@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10694}
2015-11-18 21:00:33 +00:00
Peter Boström
2be7c54b13 Remove ViEEncoder::ScaleInputImage.
BUG=webrtc:1695
R=asapersson@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10677}
2015-11-17 14:52:59 +00:00
kjellander
6f8ce060a2 common_video: rename interface -> include
To avoid breaking downstream, the "interface" directories were copied
into a new "common_video/include" dir. The old headers got pragma
warnings added about deprecation (a very short deprecation since I plan
to remove them as soon downstream is updated).
The header guards are also identical to avoid mixing them up in the transition.

BUG=webrtc:5095
TESTED=Passing compile-trybots with --clobber flag:
git cl try --clobber --bot=win_compile_rel --bot=linux_compile_rel --bot=android_compile_rel --bot=mac_compile_rel --bot=ios_rel --bot=linux_gn_rel --bot=win_x64_gn_rel --bot=mac_x64_gn_rel --bot=android_gn_rel -m tryserver.webrtc

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

Cr-Commit-Position: refs/heads/master@{#10659}
2015-11-16 21:52:31 +00:00
Henrik Kjellander
0b9e29c87d Remove include dirs from modules/{media_file,pacing}
Also move files out of media_file/source.

BUG=webrtc:5095
TESTED=git cl try -c --bot=android_compile_rel --bot=linux_compile_rel --bot=win_compile_rel --bot=mac_compile_rel --bot=ios_rel --bot=linux_gn_rel --bot=win_x64_gn_rel --bot=mac_x64_gn_rel --bot=android_gn_rel -m tryserver.webrtc
R=asapersson@webrtc.org, perkj@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10647}
2015-11-16 10:12:32 +00:00
mflodman
0a41893e36 Remove BitrateController dependency fromVideoReceiveStream.
I have another CL moving REMB from CongestonController to Call, then
I'll remove CongestoinController from this class too.

R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10632}
2015-11-13 10:12:16 +00:00
mflodman
0e7e259ebd Move BitrateAllocator from BitrateController logic to Call.
This is a step on the way to have variable bitrate for audio and is
intended to be as much of a no-op as possible.

BUG=webrtc:5079

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

Cr-Commit-Position: refs/heads/master@{#10630}
2015-11-13 05:02:46 +00:00
Henrik Kjellander
5dda80abea Remove webrtc/modules/video_{capture,render}/include
BUG=webrtc:5095
TESTED=git cl try -c --bot=android_compile_rel --bot=linux_compile_rel --bot=win_compile_rel --bot=mac_compile_rel --bot=ios_rel --bot=linux_gn_rel --bot=win_x64_gn_rel --bot=mac_x64_gn_rel --bot=android_gn_rel -m tryserver.webrtc
R=pbos@webrtc.org, perkj@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10619}
2015-11-12 11:47:02 +00:00
Peter Boström
d153a37801 Remove contention between RTCP packets and encoding.
Receiving RTCP often caused the worker thread to stall for >20 ms
(>100ms observed) due to contention on VideoSender's send_crit_ (used to
protect encoding).

This change removes an unnecessary acquire of send_crit_ and caches
encoder settings in ViEEncoder instead of acquiring them through
::SendCodec() in VCM (which is blocking).

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

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

Cr-Commit-Position: refs/heads/master@{#10582}
2015-11-10 15:27:21 +00:00
mflodman
c4a1c370aa Removed vie_defines.h
The defines still in use was only used in single files, so they were
moved to these specific cc-files.

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

Cr-Commit-Position: refs/heads/master@{#10539}
2015-11-06 12:33:56 +00:00
Henrik Kjellander
ff761fba82 modules: more interface -> include renames
This changes the following module directories:
* webrtc/modules/audio_conference_mixer/interface
* webrtc/modules/interface
* webrtc/modules/media_file/interface
* webrtc/modules/rtp_rtcp/interface
* webrtc/modules/utility/interface

To avoid breaking downstream, I followed this recipe:
1. Copy the interface dir to a new sibling directory: include
2. Update the header guards in the include directory to match the style guide.
3. Update the header guards in the interface directory to match the ones in include. This is required to avoid getting redefinitions in the not-yet-updated downstream code.
4. Add a pragma warning in the header files in the interface dir. Example:
#pragma message("WARNING: webrtc/modules/interface is DEPRECATED; "
                "use webrtc/modules/include")
5. Search for all source references to webrtc/modules/interface and update them to webrtc/modules/include (*.c*,*.h,*.mm,*.S)
6. Update all GYP+GN files. This required manual inspection since many subdirectories of webrtc/modules referenced the interface dir using ../interface etc(*.gyp*,*.gn*)

BUG=5095
TESTED=Passing compile-trybots with --clobber flag:
git cl try --clobber --bot=win_compile_rel --bot=linux_compile_rel --bot=android_compile_rel --bot=mac_compile_rel --bot=ios_rel -m tryserver.webrtc

R=stefan@webrtc.org, tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10500}
2015-11-04 07:32:04 +00:00
henrik.lundin
74f0f3551e Delete a chain of methods in ViE, VoE and ACM
The end goal is to remove AcmReceiver::SetInitialDelay. This change is
in preparation for that goal. It turns out that
AcmReceiver::SetInitialDelay was only invoked through the following
call chain, where each method in the chain is never referenced from
anywhere else (except from tests in some cases):

ViEChannel::SetReceiverBufferingMode
-> ViESyncModule::SetTargetBufferingDelay
-> VoEVideoSync::SetInitialPlayoutDelay
-> Channel::SetInitialPlayoutDelay
-> AudioCodingModule::SetInitialPlayoutDelay
-> AcmReceiver::SetInitialDelay

The start of the chain, ViEChannel::SetReceiverBufferingMode was never
referenced.

This change deletes all the methods above except
AcmReceiver::SetInitialDelay itself, which will be handled in a
follow-up change.

BUG=webrtc:3520

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

Cr-Commit-Position: refs/heads/master@{#10471}
2015-11-01 19:43:38 +00:00
Peter Boström
69ccb33131 Remove redudant encoder rate calls.
Moves EncoderParameters update checks into GenericEncoder before calling
SetRates/SetChannelParameters as applicable.

Also removes CodecConfigParameters as a bonus.

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

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

Cr-Commit-Position: refs/heads/master@{#10452}
2015-10-29 15:30:29 +00:00
Henrik Kjellander
98f53510b2 system_wrappers: rename interface -> include
BUG=webrtc:5095
R=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10438}
2015-10-28 17:17:50 +00:00
Peter Boström
415d2cd745 Use webrtc/base/logging.h for video.
BUG=webrtc:5118
R=mflodman@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10403}
2015-10-26 10:35:26 +00:00
mflodman
0c478b3d75 Rename ChannelGroup to CongestionController and move to webrtc/call/.
BUG=webrtc:5079
R=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10358}
2015-10-21 13:52:33 +00:00
mflodman
e37870297f ChannelGroup cleanup.
Move CallStats to Call, EncoderStateFeedback to VideoSendStream and
remove last ViEChannel dependency from ChannelGroup.

BUG=webrtc:5079
R=pbos@webrtc.org, stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10355}
2015-10-21 11:24:37 +00:00
tommi
e4f96501fc Remove system_wrappers/interface/trace_event.h
BUG=

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

Cr-Commit-Position: refs/heads/master@{#10346}
2015-10-21 06:00:57 +00:00
mflodman
0dbf0090a9 Remove the video channel id completely.
BUG=webrtc:5079

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

Cr-Commit-Position: refs/heads/master@{#10324}
2015-10-19 15:12:19 +00:00
pbos
22993e1a0c Unify FrameType and VideoFrameType.
Prevents some heap allocation and frame-type conversion since interfaces
mismatch. Also it's less confusing to have one type for this.

BUG=webrtc:5042
R=magjed@webrtc.org, mflodman@webrtc.org, henrik.lundin@webrtc.org, solenberg@webrtc.org, stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10320}
2015-10-19 09:39:15 +00:00
mflodman
a20de2030f Move ownership of receive ViEChannel to VideoReceiveStream.
This CL changes as little as possible and I'll follow up later with
ownership of the other members in ChannelGroup.

The next step is to remove the id used for channels.

BUG=webrtc:5079

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

Cr-Commit-Position: refs/heads/master@{#10318}
2015-10-19 05:08:29 +00:00
mflodman
949c2f04b4 Move ownership of send ViEChannels and ViEEncoder to VideoSendStream.
This is the first CL to get ready for adapting audio bitrate based on
BWE. I've kept this CL as small as possible and had to add a few getters
to ChannelManager. The next CL will do the same for receive ViEChannels.

The getters are a bit uggly, but is an in-between-state. Let's discuss
future ownership of the different modules and what do do with
ChannelGroup.

BUG=5079

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

Cr-Commit-Position: refs/heads/master@{#10298}
2015-10-16 09:31:14 +00:00
stefan
c1aeaf0dc3 Wire up packet_id / send time callbacks to webrtc via libjingle.
BUG=webrtc:4173

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

Cr-Commit-Position: refs/heads/master@{#10289}
2015-10-15 14:26:17 +00:00
noahric
65220a70a3 Fix RTPPayloadRegistry to correctly restore RTX, if a valid mapping exists.
Also updated the RTPPayloadRegistry::RestoreOriginalPacket signature to not take the first arg as a **, since it isn't modified.

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

Cr-Commit-Position: refs/heads/master@{#10276}
2015-10-14 18:29:56 +00:00
stefan
457a61db61 Pause/resume pacer from Call instead of via SendStreams.
BUG=webrtc:5073

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

Cr-Commit-Position: refs/heads/master@{#10271}
2015-10-14 10:13:04 +00:00
Peter Boström
e23e737177 Disable pacer disabling.
Since the pacer is always enabled, removing enable/disable which makes
all packet queueing succeed. Also renaming one of the ::SendPackets
::InsertPacket to avoid confusion.

BUG=webrtc:1695, webrtc:2629
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10211}
2015-10-08 09:44:29 +00:00
asapersson
13c433c299 Add delay metric (includes network delay (rtt/2) + jitter delay + decode time + render delay):
- "WebRTC.Video.OnewayDelayInMs"

BUG=chromium:512752

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

Cr-Commit-Position: refs/heads/master@{#10180}
2015-10-06 11:08:22 +00:00
asapersson
dec5ebf106 Move sent key frame stats to send_statistics_proxy class.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#10166}
2015-10-05 09:36:20 +00:00
pbos
da903eaabb Unify newapi::RtcpMode and RTCPMethod.
BUG=webrtc:1695
R=solenberg@webrtc.org, stefan@webrtc.org
TBR=mflodman@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10143}
2015-10-02 09:37:18 +00:00
stefan
4fbd145dce Fix suspend below min bitrate in new API by making it possible to set min bitrate at the receive-side.
In addition to this the ramp-up tests are refactored to use a receive call instead of only a remote bitrate estimator, and to make use of BaseTest.

BUG=webrtc:4836

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

Cr-Commit-Position: refs/heads/master@{#10087}
2015-09-28 10:57:23 +00:00
Erik Språng
6b8d355168 Reland "Wire up send-side bandwidth estimation."
Revert was patchset #8 id:140001 of https://codereview.webrtc.org/1338203003/

The culprit was RTC_DCHECK(poller_thread_->Start()); in rampup_test.cc

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

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

Cr-Commit-Position: refs/heads/master@{#10052}
2015-09-24 13:07:17 +00:00
asapersson
74d85e19ae Reduce locking in overuse frame detector now that (as of r9508) the observer_ and options_ can only be set at construction time. E.g. no lock is any longer held while doing the callback.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#10043}
2015-09-24 07:53:38 +00:00
Erik Språng
c9bbeb0354 Revert of Wire up send-side bandwidth estimation. (patchset #8 id:140001 of https://codereview.webrtc.org/1338203003/ )
Reason for revert:
Breaking some Android bots.
https://chromegw.corp.google.com/i/client.webrtc/builders/Android32%20Tests%20%28L%20Nexus5%29

Original issue's description:
> Wire up send-side bandwidth estimation.
>
> BUG=webrtc:4173
>
> Committed: https://crrev.com/ef165eefc79cf28bb67779afe303cc2365885547
> Cr-Commit-Position: refs/heads/master@{#10012}

TBR=stefan@webrtc.org, kjellander@webrtc.org
NOPRESUBMIT=false
NOTREECHECKS=false
NOTRY=false
BUG=webrtc:4173

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

Cr-Commit-Position: refs/heads/master@{#10029}
2015-09-23 11:52:01 +00:00
Peter Boström
7083e119e8 Remove callback_cs_ in ViEEncoder.
Instead make callbacks const and set on construction.

BUG=webrtc:1695
R=philipel@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10017}
2015-09-22 14:29:00 +00:00
sprang
ef165eefc7 Wire up send-side bandwidth estimation.
BUG=webrtc:4173

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

Cr-Commit-Position: refs/heads/master@{#10012}
2015-09-22 12:10:58 +00:00
sprang
ebbf8a805b Make sure rtp_rtcp module doesn't directly reference anything in the pacer module, and remove build dependencies on it.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#10005}
2015-09-21 22:11:18 +00:00
Peter Boström
f4aa4c2283 Remove id from VideoProcessingModule.
Also converts CriticalSectionWrapper to rtc::CriticalSection as a bonus.

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

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

Cr-Commit-Position: refs/heads/master@{#9986}
2015-09-18 10:24:33 +00:00
Peter Boström
ac547a6538 Remove channel ids from various interfaces.
Starts by removing channel/engine id from ViEChannel which propagates
down to the RTP/RTCP module as well as the transport class.

IncomingVideoStream::RenderFrame() is untouched for now but receives a
fake id instead of the previous channel id. Added a TODO to remove it
later but the RenderFrame call is implemented in a lot of
platform-dependent files and should probably remove the "manager" aspect
of renderers, so preferring to do it separately

BUG=webrtc:1695
R=henrika@webrtc.org, mflodman@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9978}
2015-09-17 21:06:02 +00:00
henrikg
91d6edef35 Add RTC_ prefix to (D)CHECKs and related macros.
We must remove dependency on Chromium, i.e. we can't use Chromium's base/logging.h. That means we need to define these macros in WebRTC also when doing Chromium builds. And this causes redefinition.

Alternative solutions:
* Check if we already have defined e.g. CHECK, and don't define them in that case. This makes us depend on include order in Chromium, which is not acceptable.
* Don't allow using the macros in WebRTC headers. Error prone since if someone adds it there by mistake it may compile fine, but later break if a header in added or order is changed in Chromium. That will be confusing and hard to enforce.
* Ensure that headers that are included by an embedder don't include our macros. This would require some heavy refactoring to be maintainable and enforcable.
* Changes in Chromium for this is obviously not an option.

BUG=chromium:468375
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#9964}
2015-09-17 07:24:51 +00:00
henrikg
3c089d751e Add RTC_ prefix to contructormagic macros.
We must remove dependency on Chromium, i.e. we can't use Chromium's base/logging.h. That means we need to define these macros in WebRTC also when doing Chromium builds. And this causes redefinition.

* DISALLOW_ASSIGN -> RTC_DISALLOW_ASSIGN
* DISALLOW_COPY_AND_ASSIGN -> RTC_DISALLOW_COPY_AND_ASSIGN
* DISALLOW_IMPLICIT_CONSTRUCTORS -> RTC_DISALLOW_IMPLICIT_CONSTRUCTORS

Related CL: https://codereview.webrtc.org/1335923002/

BUG=chromium:468375
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#9953}
2015-09-16 12:37:52 +00:00
Peter Boström
8e4e8b0455 Simplify BitrateAllocator::AddBitrateObserver.
Remove start_bitrate_bps which is no longer used and return the current
allocated bitrate instead of having it as an out parameter, removing the
previous return value which is no longer used.

Permits removing bitrate controller usage from ViEEncoder.

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

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

Cr-Commit-Position: refs/heads/master@{#9942}
2015-09-15 13:08:12 +00:00
Peter Boström
a753177f93 Remove default ViEEncoder encoder instance.
BUG=webrtc:1695
R=stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9940}
2015-09-15 11:12:32 +00:00
sprang
5e023eb337 Add TransportFeedback adapter, adapting remote feedback to bwe estiamtor
When using send-side bandwidth estimation, the inter-packet delay is
reported back to the sender using RTCP TransportFeedback messages.
Theis data needs to be translated into a format which the bandwidth
estimator (now instantiated on the send side) can use, including looking
up the local absolute send time from the send time history.

BUG=webrtc:4173

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

Cr-Commit-Position: refs/heads/master@{#9929}
2015-09-14 13:42:49 +00:00
stefan
847855b865 Add a name to the ProcessThread constructor.
Helps differentiate between different instances when debugging.

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

Cr-Commit-Position: refs/heads/master@{#9927}
2015-09-11 16:52:22 +00:00
Åsa Persson
746210f46d Remove unused overuse detection metric (capture jitter).
BUG=
R=pbos@webrtc.org, stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9881}
2015-09-08 08:52:54 +00:00
sprang
318673cf5a Update SendTimeHistory to store complete PacketInfo, not just send time
This will be used for the send side bitrate estimation. Storing various
meta-data about packets that can be retreived when arrival time feeback
arrives.

BUG=webrtc:4173

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

Cr-Commit-Position: refs/heads/master@{#9859}
2015-09-04 11:43:23 +00:00
pbos
f42376c601 Wire up currently-received video codec to stats.
BUG=webrtc:1844, webrtc:4808
R=mflodman@webrtc.org, pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9810}
2015-08-28 14:35:40 +00:00
stefan
2328a94ec7 Add average rtt to CallStatsObserver and an average rtt histogram.
TBR=mflodman@webrtc.org

BUG=webrtc:4711,webrtc:4548

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

Cr-Commit-Position: refs/heads/master@{#9687}
2015-08-07 11:27:56 +00:00
sprang
867fb5224e Add support for transport wide sequence numbers
Also refactor packet router to use a map rather than iterate over all
rtp modules for each packet sent.

BUG=webrtc:4311

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

Cr-Commit-Position: refs/heads/master@{#9670}
2015-08-03 11:38:48 +00:00
pbos
ef35f069e7 Remove webrtc::Config from ViEChannelGroup.
Also removing webrtc/experiments.h which is no longer used.

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

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

Cr-Commit-Position: refs/heads/master@{#9642}
2015-07-27 15:37:14 +00:00