105 Commits

Author SHA1 Message Date
henrik.lundin@webrtc.org
7f2c2a5db2 Adding optimized aggrgation to VP8 packetizer
This change introduces a new algorithm for aggregating small
partitions into packets. The algorithm is based on a tree-search
to find an optimal allocation of the packets, such that the
difference in size between packets is minimized.

The new method is used when partition aggregation is allowed and
balanced packets are requested. Otherwise, the old method is used.

The new method is implemented using the new classes
Vp8PartitionAggregator and PartitionTreeNode. Both classes have
dedicated unit tests.

In order to facilitate the new algorithm, the packetizer was
redesigned to calculate all packet sizes when the first packet is
extracted. The information about all packets is stored in a packet
queue structure, which is then popped for each packet extracted.

Finally, a bug in the old packetizer algorithm was fixed. The bug
caused a +/-1 error in packet sizes when balanced packets were
produced. The unit test were updated accordingly.

TEST=rtp_rtcp_unittests: PartitionTreeNode.* Vp8PartitionAggregator.* RtpFormatVp8Test.*

Review URL: https://webrtc-codereview.appspot.com/345008

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1447 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-18 08:21:15 +00:00
pwestin@webrtc.org
5621057956 Removing unused code.
Review URL: https://webrtc-codereview.appspot.com/349008

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1442 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-17 12:45:47 +00:00
pwestin@webrtc.org
df9bd9bdbd Removed dead code.
Review URL: https://webrtc-codereview.appspot.com/352010

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1437 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-17 11:42:02 +00:00
pwestin@webrtc.org
aafa5a331c Coverty report: Unititialized members
Review URL: http://webrtc-codereview.appspot.com/349007

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1436 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-17 07:07:37 +00:00
asapersson@webrtc.org
43b8fc5c0d Review URL: http://webrtc-codereview.appspot.com/345011
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1435 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-16 13:49:04 +00:00
asapersson@webrtc.org
869ce2d441 Review URL: http://webrtc-codereview.appspot.com/353002
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1432 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-16 11:58:36 +00:00
asapersson@webrtc.org
0b3c35a258 Review URL: http://webrtc-codereview.appspot.com/321011
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1431 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-16 11:06:31 +00:00
mflodman@webrtc.org
117c119501 Only update REMB value if there is a calid bitrate estimate.
BUG=
TEST=

Review URL: http://webrtc-codereview.appspot.com/352005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1421 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-13 08:52:58 +00:00
stefan@webrtc.org
c8277db7c8 Fix selective retransmissions after corrupt merge in r1373.
BUG=228
TEST=

Review URL: http://webrtc-codereview.appspot.com/345006

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1414 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-12 15:38:50 +00:00
mflodman@webrtc.org
80d60420ff RTCPSender::_bitrate_observer not initialized.
BUG=227
TEST=Valgrind

Review URL: http://webrtc-codereview.appspot.com/352004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1410 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-12 14:28:53 +00:00
niklas.enbom@webrtc.org
553657b2f8 See http://codereview.chromium.org/9188022/ for details
Review URL: http://webrtc-codereview.appspot.com/347009

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1403 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-12 08:49:34 +00:00
mflodman@webrtc.org
04c18cb37a Update all child modules of with received bandwidth estimate.
BUG=224

Review URL: http://webrtc-codereview.appspot.com/347007

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1391 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-11 14:18:33 +00:00
perkj@webrtc.org
ce5990cb0b Fix defect http://code.google.com/p/webrtc/issues/detail?id=222
"ViE GetSentRTCPStatistics fails on a sending channel if it don't receive rtp video packets.

BUG=222
TEST= tested in loopback. No new test added yet.

Review URL: http://webrtc-codereview.appspot.com/343003

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1387 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-11 13:00:08 +00:00
stefan@webrtc.org
c5b73e3974 Further cleanup of OverUseDetector. Removed member no longer used.
BUG=
TEST=

Review URL: http://webrtc-codereview.appspot.com/344007

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1377 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-10 16:42:09 +00:00
pwestin@webrtc.org
8281e7dd4a Added RTX to ViE.
Review URL: http://webrtc-codereview.appspot.com/336001

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1373 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-10 14:09:18 +00:00
asapersson@webrtc.org
c5a1cee73e Review URL: http://webrtc-codereview.appspot.com/348004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1367 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-10 12:54:44 +00:00
stefan@webrtc.org
727e1611ac Removes debug file writing.
BUG=
TEST=

Review URL: http://webrtc-codereview.appspot.com/343006

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1365 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-10 11:45:47 +00:00
stefan@webrtc.org
e21a8cf4d4 Fix issue 211: Make sure we always generate at least one FEC packet per frame if we need protection.
BUG=211
TEST=

Review URL: http://webrtc-codereview.appspot.com/348002

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1363 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-10 08:37:33 +00:00
pwestin@webrtc.org
12d97f6637 Made send pad data generic (audio and video)
Review URL: http://webrtc-codereview.appspot.com/343001

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1346 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-05 10:54:44 +00:00
pwestin@webrtc.org
3aa25de346 Bugfix OnNetworkChanged not triggered for RTCP compund messages if TMMBR is higher than last value.
TBR=mflodman
Review URL: http://webrtc-codereview.appspot.com/342001

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1344 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-05 08:40:56 +00:00
pwestin@webrtc.org
6c1d41583a Fix for RTP extension audio level.
Review URL: http://webrtc-codereview.appspot.com/339002

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1334 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-04 17:04:51 +00:00
pwestin@webrtc.org
c450a19669 Removed Version function from all modules.
TBR=henrik_a
Review URL: http://webrtc-codereview.appspot.com/329023

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1330 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-01-04 15:00:12 +00:00
stefan@webrtc.org
f6c6b1c5b5 Include the media packet FEC headers in the video bitrate.
BUG=
TEST=

Review URL: http://webrtc-codereview.appspot.com/328014

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1296 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-23 10:33:39 +00:00
mflodman@webrtc.org
1ce66e4dfb Don't report error when failing to send RTCP BYE.
Review URL: http://webrtc-codereview.appspot.com/337002

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1293 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-22 18:40:15 +00:00
stefan@webrtc.org
6a4bef4e65 Implements selective retransmissions.
Default is set to not retransmit VP8 non-base layer packets or FEC packets.

BUG=
TEST=

Review URL: http://webrtc-codereview.appspot.com/323010

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1290 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-22 12:52:41 +00:00
mflodman@webrtc.org
84dc3d134d Add REMB functionality to ViE.
This CL only adds support for encoding one stream, but receiving multiple streams.

BUG=
TEST=video_engine_core_unittest + auto_test/loopback

Review URL: http://webrtc-codereview.appspot.com/333011

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1284 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-22 10:26:13 +00:00
henrik.lundin@webrtc.org
1e28d3c2e1 Change VP8 packetizer to use a single max payload size
The packetizer class is changed so that the max payload size is
provided on construction of the class rather than for each packet.
The tests are re-written to comply with the new design.

Also fixing a few errors in the tests.

Review URL: http://webrtc-codereview.appspot.com/335010

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1280 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-22 08:49:31 +00:00
pwestin@webrtc.org
8edb39db30 Prevent sending empty RTCP packet.
Review URL: http://webrtc-codereview.appspot.com/331009

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1277 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-22 07:40:33 +00:00
niklas.enbom@webrtc.org
6c9be123ef Letting strncpy do its job. Landing and extending http://webrtc-codereview.appspot.com/329010/ on behalf of tbreisacher.
Review URL: http://webrtc-codereview.appspot.com/335009

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1260 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-21 08:59:31 +00:00
henrik.lundin@webrtc.org
00e730730e Refactoring RtpFormatVp8Test
This is the first change in a series of changes to get new functionality
into the VP8 packetizer.

This first refactors the RtpFormatVp8Test class, without changing the
operation of the tested RtpFormatVp8 class. A test helper class
RtpFormatVp8TestHelper is introduced to reduce code duplication.

Review URL: http://webrtc-codereview.appspot.com/304009

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1258 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-21 08:51:36 +00:00
pwestin@webrtc.org
061fa5b828 Changed handling of padding data.
Review URL: http://webrtc-codereview.appspot.com/331008

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1252 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-20 15:56:17 +00:00
mikhal@webrtc.org
0e7d9d862a Adding layer info consideration when applying FEC protection. In this first version, we hard code protection zero for non-base layer frames. As a future enhancement, an array should be passed from mediaOpt to set the protection per layer. A TODO was added in MediaOpt.
Review URL: http://webrtc-codereview.appspot.com/330005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1238 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-19 19:04:49 +00:00
henrika@webrtc.org
e32c08a5a6 Removes usage of default parameters and fixes a bug which was found
using Clang on Linux.

BUG=none
TEST=none
TBR=pwestin

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1234 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-19 17:39:48 +00:00
andrew@webrtc.org
8a44259ea8 Move static consts out of class.
Still causing a gtest error on non-Win platforms. This should fix it...

TBR=asapersson@webrtc.org
TEST=build on Linux

Review URL: http://webrtc-codereview.appspot.com/332006

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1225 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-16 21:24:30 +00:00
andrew@webrtc.org
41192469f6 Switch enums to consts to fix gtest error.
TBR=asapersson@webrtc.org
TEST=build on Windows

Review URL: http://webrtc-codereview.appspot.com/330008

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1224 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-16 20:55:46 +00:00
marpan@webrtc.org
57353a33f1 FEC Receiver: Fix to how old packets (e.g., re-tranmitted packets in hybird NACK-FEC mode) are treated.
This change avoids having old packets end up on the current packet list for FEC decoding, and so they are immediately sent out to jitter buffer.
The current list of packets for FEC decoding are sent out only when new packet arrives (with time-stamp greater than current).
Review URL: http://webrtc-codereview.appspot.com/322009

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1222 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-16 17:21:09 +00:00
asapersson@webrtc.org
5249cc8f77 Review URL: http://webrtc-codereview.appspot.com/295010
git-svn-id: http://webrtc.googlecode.com/svn/trunk@1219 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-16 14:31:37 +00:00
henrike@webrtc.org
65573f2922 Removed usage of the deprecated critical section constructor in rtp_rtcp.
Review URL: http://webrtc-codereview.appspot.com/315004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1173 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-13 19:17:27 +00:00
stefan@webrtc.org
f4c8286222 Pass NACK and FEC overhead rates through the ProtectionCallback to VCM.
These overhead rates are used by the VCM to compensate the source
coding rate for NACK and FEC.

BUG=
TEST=

Review URL: http://webrtc-codereview.appspot.com/323003

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1171 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-13 15:38:14 +00:00
henrik.lundin@webrtc.org
1ced840893 Fixing a nit in the unittest
This caused some of the build bots to fail.

Review URL: http://webrtc-codereview.appspot.com/324005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1170 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-13 14:59:00 +00:00
henrik.lundin@webrtc.org
eda86dc76b Adding a LayerSync bit to VP8 RTP header
Updated RtpFormatVp8, ModuleRTPUtility, VP8Encoder and VP8Decoder
to support a new LayerSync ("Y") bit. Note, in VP8Encoder the bit
must be used together with a non-negative value for temporalIdx.
Fixing the plumbing between RTP module and and from VP8 wrapper.
Updating unit tests; all pass.

The new bit is yet to be used by the VP8 wrapper.

Review URL: http://webrtc-codereview.appspot.com/323008

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1169 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-13 14:11:06 +00:00
henrik.lundin@webrtc.org
4aae0e489f Shaping up formatting of rtp_utility_test.cc
Preparations for future work in this file.

Review URL: http://webrtc-codereview.appspot.com/318011

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1168 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-13 09:15:21 +00:00
henrike@webrtc.org
315282c01a Fixes a compiler warning related to dynamically allocated static memory. the fix is to leak the memory since the OS will clean it up anyways. This will not add noise to memory tools so it's ok. The issue is reported here: http://code.google.com/p/webrtc/issues/detail?id=147.
Review URL: http://webrtc-codereview.appspot.com/267023

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1150 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-09 17:46:20 +00:00
henrike@webrtc.org
441b3fe2a1 Made some global statics have function scope so that the global static count is 0 for the rtp_rtcp module.
Review URL: http://webrtc-codereview.appspot.com/316001

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1125 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-08 02:03:49 +00:00
stefan@webrtc.org
cc7b649474 Add trace for the situation when the min bitrate > available bandwidth.
BUG=
TEST=

Review URL: http://webrtc-codereview.appspot.com/312001

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1123 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-07 13:22:06 +00:00
henrik.lundin@webrtc.org
bf86c33b0e Removing OutputDebugString from rtp_rtcp module
This is in response to WebRTC issue 167.

BUG=http://code.google.com/p/webrtc/issues/detail?id=167

Review URL: http://webrtc-codereview.appspot.com/301013

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1119 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-07 10:44:05 +00:00
marpan@webrtc.org
1d34212a45 FEC: Update to packets masks (FEC generator matrix) in fec_private_tables.h
A set of the packet masks (up 10x10 size) are modified for the following reasons:

1) have more even column and row degree (number of 1 bits), when possible.

2) if cases where the column degree cannot be constant across source packets, placed the extra 1 bit in the first packet column (so little more protection on 1st partition), as opposed to having some ~middle source packet have the extra bit.

3) in some cases, made the mask a little more sparse/reduced the overlap.

Overall the average recovery is a little better with these masks.

Mask sizes above 10 will be updated in future changelist.
Review URL: http://webrtc-codereview.appspot.com/305001

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1113 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-06 18:50:11 +00:00
henrik.lundin@webrtc.org
b6e58eb5a1 Fix formatting of rtp_format_vp8*
Sorting out all lint issues and fixing indentation.

Review URL: http://webrtc-codereview.appspot.com/301011

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1111 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-06 15:56:18 +00:00
henrike@webrtc.org
4b00560a6e Fixes build error in rtp_rtc module introduced in r1076.
Review URL: http://webrtc-codereview.appspot.com/301005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1081 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-02 00:32:24 +00:00
pwestin@webrtc.org
0644b1dc35 Introduce a mockable RtpRtcpClock interface replacing ModuleRTPUtility time functions
A new RtpRtcpClock interface has been added to rtp_rtcp_defines.h
and provides time facilities used by an RTP/RTCP module. Also,
NTP constants have been made public in the
webrtc::ModuleRTPUtility namespace to make implementation of
external clocks easier.

An overloaded version of CreateRtpRtcp() accepts a clock argument. By
default, if no clock is provided, the module uses the system clock
(old ModuleRTPUtility implementation).

Throughout the RTP/RTCP module code, calls to TickTime and
ModuleRTPUtility time functions have been replaced with calls to time
methods on a clock object.

The following classes take a clock object in their constructor and
hold a _clock field (either directly, or inherited from a parent):

Bitrate
ModuleRtpRtcpImpl
RTCPReceiver
RTCPSender
RTPReceiver
RTPSender
RTPSenderAudio
RTPSenderVideo

Methods from other classes that do not derive any of those and
require a time take an additional nowMS parameter, that should be
the result of calling GetTimeInMS() on a clock object.
Review URL: http://webrtc-codereview.appspot.com/268017

git-svn-id: http://webrtc.googlecode.com/svn/trunk@1076 4adac7df-926f-26a2-2b94-8c16560cd09d
2011-12-01 15:42:31 +00:00