Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(461)

Issue 2629883003: First-order-FEC recoverability calculation (Closed)

Created:
3 years, 11 months ago by elad.alon
Modified:
3 years, 10 months ago
CC:
webrtc-reviews_webrtc.org, henrika_webrtc, Andrew MacDonald, tterriberry_mozilla.com, audio-team_agora.io, hlundin-webrtc, peah-webrtc, the sun
Target Ref:
refs/heads/master
Project:
webrtc
Visibility:
Public.

Description

Replace consecutive-losses count by a calculation of first-order-FEC recoverability. Note: * PLR is calculated over all of the known packets. * RPLR is calculated over all of the known packet *pairs*. That is, only over sets of subsequent packets where the reception status is known for both. BUG=webrtc:7058 Review-Url: https://codereview.webrtc.org/2629883003 Cr-Commit-Position: refs/heads/master@{#16401} Committed: https://chromium.googlesource.com/external/webrtc/+/d83b9670a67c1445a81a3cf20984185c99faa3dc

Patch Set 1 #

Patch Set 2 : UT updated #

Patch Set 3 : nit #

Total comments: 1

Patch Set 4 : Unused variables in Validate() #

Patch Set 5 : Rebased #

Patch Set 6 : Fuzzer modified accordingly #

Patch Set 7 : Fuzzer mistake fixed. #

Patch Set 8 : nit #

Total comments: 1

Patch Set 9 : Some refactoring #

Patch Set 10 : Undo unintended changes (from rebasing the diff) #

Total comments: 72

Patch Set 11 : CR response #

Total comments: 2

Patch Set 12 : . #

Total comments: 4

Patch Set 13 : . #

Patch Set 14 : . #

Total comments: 20

Patch Set 15 : CR #

Total comments: 4

Patch Set 16 : CR #

Total comments: 25

Patch Set 17 : . #

Unified diffs Side-by-side diffs Delta from patch set Stats (+465 lines, -368 lines) Patch
M webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 3 chunks +36 lines, -13 lines 0 comments Download
M webrtc/voice_engine/transport_feedback_packet_loss_tracker.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 3 chunks +60 lines, -19 lines 0 comments Download
M webrtc/voice_engine/transport_feedback_packet_loss_tracker.cc View 1 2 3 4 5 6 7 8 9 10 11 12 5 chunks +116 lines, -79 lines 0 comments Download
M webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 10 chunks +253 lines, -257 lines 0 comments Download

Messages

Total messages: 61 (14 generated)
elad.alon_webrtc.org
https://codereview.webrtc.org/2629883003/diff/40001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.cc File webrtc/voice_engine/transport_feedback_packet_loss_tracker.cc (left): https://codereview.webrtc.org/2629883003/diff/40001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.cc#oldcode146 webrtc/voice_engine/transport_feedback_packet_loss_tracker.cc:146: void TransportFeedbackPacketLossTracker::ApplyPacketStatus( Style question: ApplyPacketStatus and UndoPacketStatus are pretty ...
3 years, 11 months ago (2017-01-14 14:05:55 UTC) #1
minyue-webrtc
The calculation looks good. I may review some details like naming etc later. First, please ...
3 years, 11 months ago (2017-01-23 14:04:54 UTC) #5
elad.alon_webrtc.org
On 2017/01/23 14:04:54, minyue-webrtc wrote: > The calculation looks good. I may review some details ...
3 years, 11 months ago (2017-01-23 14:09:40 UTC) #6
minyue-webrtc
On 2017/01/23 14:09:40, elad.alon wrote: > On 2017/01/23 14:04:54, minyue-webrtc wrote: > > The calculation ...
3 years, 11 months ago (2017-01-23 14:58:11 UTC) #7
minyue-webrtc
On 2017/01/23 14:58:11, minyue-webrtc wrote: > On 2017/01/23 14:09:40, elad.alon wrote: > > On 2017/01/23 ...
3 years, 11 months ago (2017-01-23 14:58:52 UTC) #8
elad.alon_webrtc.org
Would you be okay with me introducing this proposed change in its own CL? Rationale: ...
3 years, 11 months ago (2017-01-23 15:17:15 UTC) #9
minyue-webrtc
On 2017/01/23 15:17:15, elad.alon wrote: > Would you be okay with me introducing this proposed ...
3 years, 11 months ago (2017-01-23 15:27:56 UTC) #10
elad.alon_webrtc.org
On 2017/01/23 15:27:56, minyue-webrtc wrote: > On 2017/01/23 15:17:15, elad.alon wrote: > > Would you ...
3 years, 11 months ago (2017-01-23 15:51:33 UTC) #11
minyue-webrtc
Good work! Please see my comments. Most of them are cosmetic suggestions. https://codereview.webrtc.org/2629883003/diff/180001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc File webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc ...
3 years, 11 months ago (2017-01-25 09:38:46 UTC) #12
elad.alon_webrtc.org
https://codereview.webrtc.org/2629883003/diff/180001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc File webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc (right): https://codereview.webrtc.org/2629883003/diff/180001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc#newcode23 webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc:23: T FuzzInput(const uint8_t*& data, size_t& size) { On 2017/01/25 ...
3 years, 11 months ago (2017-01-25 12:47:55 UTC) #13
elad.alon_webrtc.org
https://codereview.webrtc.org/2629883003/diff/180001/webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc File webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc (right): https://codereview.webrtc.org/2629883003/diff/180001/webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc#newcode433 webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc:433: // [1110-101-GAP-101] -> [11101-01-GAP-10001-GAP-101] On 2017/01/25 09:38:46, minyue-webrtc wrote: ...
3 years, 11 months ago (2017-01-25 13:14:33 UTC) #14
minyue-webrtc
https://codereview.webrtc.org/2629883003/diff/180001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc File webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc (right): https://codereview.webrtc.org/2629883003/diff/180001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc#newcode23 webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc:23: T FuzzInput(const uint8_t*& data, size_t& size) { On 2017/01/25 ...
3 years, 11 months ago (2017-01-25 13:54:57 UTC) #15
elad.alon_webrtc.org
On 2017/01/25 13:54:57, minyue-webrtc wrote: > https://codereview.webrtc.org/2629883003/diff/180001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc > File webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc > (right): > > https://codereview.webrtc.org/2629883003/diff/180001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc#newcode23 ...
3 years, 11 months ago (2017-01-25 14:05:33 UTC) #16
stefan-webrtc
https://codereview.webrtc.org/2629883003/diff/220001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h File webrtc/voice_engine/transport_feedback_packet_loss_tracker.h (right): https://codereview.webrtc.org/2629883003/diff/220001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h#newcode35 webrtc/voice_engine/transport_feedback_packet_loss_tracker.h:35: size_t rplr_min_num_pairs); May want to define rplr above. https://codereview.webrtc.org/2629883003/diff/220001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h#newcode87 ...
3 years, 11 months ago (2017-01-25 16:27:48 UTC) #17
elad.alon_webrtc.org
https://codereview.webrtc.org/2629883003/diff/220001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h File webrtc/voice_engine/transport_feedback_packet_loss_tracker.h (right): https://codereview.webrtc.org/2629883003/diff/220001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h#newcode35 webrtc/voice_engine/transport_feedback_packet_loss_tracker.h:35: size_t rplr_min_num_pairs); On 2017/01/25 16:27:48, stefan-webrtc wrote: > May ...
3 years, 11 months ago (2017-01-25 18:28:43 UTC) #18
minyue-webrtc
https://codereview.webrtc.org/2629883003/diff/180001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.cc File webrtc/voice_engine/transport_feedback_packet_loss_tracker.cc (right): https://codereview.webrtc.org/2629883003/diff/180001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.cc#newcode290 webrtc/voice_engine/transport_feedback_packet_loss_tracker.cc:290: if (total < min_window_size_) On 2017/01/25 12:47:54, elad.alon wrote: ...
3 years, 11 months ago (2017-01-25 20:01:00 UTC) #19
minyue-webrtc
hi Elad, I see that you have uploaded new patch. Next time, please send an ...
3 years, 10 months ago (2017-01-27 08:52:34 UTC) #21
elad.alon_webrtc.org
On 2017/01/27 08:52:34, minyue-webrtc wrote: > hi Elad, > > I see that you have ...
3 years, 10 months ago (2017-01-27 10:29:22 UTC) #22
minyue-webrtc
Some wording suggestion + DCHECK discussion https://codereview.webrtc.org/2629883003/diff/180001/webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc File webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc (right): https://codereview.webrtc.org/2629883003/diff/180001/webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc#newcode53 webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc:53: RTC_CHECK_EQ(base_sequence_num, test_feedback.GetBaseSequence()); On ...
3 years, 10 months ago (2017-01-30 09:30:24 UTC) #23
elad.alon_webrtc.org
https://codereview.webrtc.org/2629883003/diff/260001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc File webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc (right): https://codereview.webrtc.org/2629883003/diff/260001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc#newcode101 webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc:101: // (The distribution isn't uniform, but it's enough; more ...
3 years, 10 months ago (2017-01-30 11:14:13 UTC) #24
elad.alon_webrtc.org
https://codereview.webrtc.org/2629883003/diff/180001/webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc File webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc (right): https://codereview.webrtc.org/2629883003/diff/180001/webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc#newcode53 webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc:53: RTC_CHECK_EQ(base_sequence_num, test_feedback.GetBaseSequence()); On 2017/01/30 09:30:23, minyue-webrtc wrote: > On ...
3 years, 10 months ago (2017-01-30 16:37:14 UTC) #25
minyue-webrtc
good, just a suggestion on the uniform distribution and a word in the comment. https://codereview.webrtc.org/2629883003/diff/260001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h ...
3 years, 10 months ago (2017-01-31 08:28:12 UTC) #26
stefan-webrtc
https://codereview.webrtc.org/2629883003/diff/180001/webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc File webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc (right): https://codereview.webrtc.org/2629883003/diff/180001/webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc#newcode53 webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc:53: RTC_CHECK_EQ(base_sequence_num, test_feedback.GetBaseSequence()); On 2017/01/30 16:37:13, elad.alon wrote: > On ...
3 years, 10 months ago (2017-01-31 11:45:19 UTC) #27
minyue-webrtc
https://codereview.webrtc.org/2629883003/diff/180001/webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc File webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc (right): https://codereview.webrtc.org/2629883003/diff/180001/webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc#newcode53 webrtc/voice_engine/transport_feedback_packet_loss_tracker_unittest.cc:53: RTC_CHECK_EQ(base_sequence_num, test_feedback.GetBaseSequence()); On 2017/01/31 11:45:19, stefan-webrtc wrote: > On ...
3 years, 10 months ago (2017-01-31 11:51:43 UTC) #28
elad.alon_webrtc.org
https://codereview.webrtc.org/2629883003/diff/280001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc File webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc (right): https://codereview.webrtc.org/2629883003/diff/280001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc#newcode31 webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc:31: size_t FuzzInRange(const uint8_t** data, On 2017/01/31 08:28:11, minyue-webrtc wrote: ...
3 years, 10 months ago (2017-01-31 12:42:24 UTC) #29
minyue-webrtc
lgtm good work + a small note https://codereview.webrtc.org/2629883003/diff/300001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc File webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc (right): https://codereview.webrtc.org/2629883003/diff/300001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc#newcode40 webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc:40: const size_t ...
3 years, 10 months ago (2017-01-31 12:50:19 UTC) #30
minyue-webrtc
https://codereview.webrtc.org/2629883003/diff/300001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc File webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc (right): https://codereview.webrtc.org/2629883003/diff/300001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc#newcode41 webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc:41: RTC_CHECK_LE(offset, range); // (fuzzed <= 0xffff) -> (offset < ...
3 years, 10 months ago (2017-01-31 12:53:27 UTC) #31
elad.alon_webrtc.org
https://codereview.webrtc.org/2629883003/diff/300001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc File webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc (right): https://codereview.webrtc.org/2629883003/diff/300001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc#newcode40 webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc:40: const size_t offset = (static_cast<float>(fuzzed) / 0x10000) * (range ...
3 years, 10 months ago (2017-01-31 13:43:54 UTC) #34
minyue-webrtc
https://codereview.webrtc.org/2629883003/diff/300001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc File webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc (right): https://codereview.webrtc.org/2629883003/diff/300001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc#newcode40 webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc:40: const size_t offset = (static_cast<float>(fuzzed) / 0x10000) * (range ...
3 years, 10 months ago (2017-01-31 15:09:39 UTC) #37
minyue-webrtc
And I call other reviewers to take a look.
3 years, 10 months ago (2017-01-31 15:10:07 UTC) #38
michaelt
lgtm
3 years, 10 months ago (2017-01-31 15:16:15 UTC) #39
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.webrtc.org/2629883003/300001
3 years, 10 months ago (2017-01-31 15:18:33 UTC) #41
commit-bot: I haz the power
Try jobs failed on following builders: presubmit on master.tryserver.webrtc (JOB_FAILED, http://build.chromium.org/p/tryserver.webrtc/builders/presubmit/builds/12865)
3 years, 10 months ago (2017-01-31 15:23:24 UTC) #43
stefan-webrtc
https://codereview.webrtc.org/2629883003/diff/300001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc File webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc (right): https://codereview.webrtc.org/2629883003/diff/300001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc#newcode23 webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc:23: T FuzzInput(const uint8_t** data, size_t* size) { Seems like ...
3 years, 10 months ago (2017-02-01 13:11:19 UTC) #44
sprang_webrtc
Looks good, just some minor comments. I haven't looked at all the test cases in ...
3 years, 10 months ago (2017-02-01 14:27:20 UTC) #45
elad.alon_webrtc.org
https://codereview.webrtc.org/2629883003/diff/300001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc File webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc (right): https://codereview.webrtc.org/2629883003/diff/300001/webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc#newcode23 webrtc/test/fuzzers/transport_feedback_packet_loss_tracker_fuzzer.cc:23: T FuzzInput(const uint8_t** data, size_t* size) { On 2017/02/01 ...
3 years, 10 months ago (2017-02-01 15:25:50 UTC) #46
stefan-webrtc
lgtm for webrtc/test
3 years, 10 months ago (2017-02-01 15:27:45 UTC) #47
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.webrtc.org/2629883003/320001
3 years, 10 months ago (2017-02-01 15:29:51 UTC) #50
elad.alon_webrtc.org
On 2017/02/01 15:27:45, stefan-webrtc wrote: > lgtm for webrtc/test Committed. Erik, I've assumed my handling ...
3 years, 10 months ago (2017-02-01 15:31:17 UTC) #51
elad.alon_webrtc.org
On 2017/02/01 15:31:17, elad.alon wrote: > On 2017/02/01 15:27:45, stefan-webrtc wrote: > > lgtm for ...
3 years, 10 months ago (2017-02-01 15:35:40 UTC) #52
sprang_webrtc
lgtm for now, but maybe keep comments in mind for future updates? https://codereview.webrtc.org/2629883003/diff/300001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h File webrtc/voice_engine/transport_feedback_packet_loss_tracker.h ...
3 years, 10 months ago (2017-02-01 15:52:22 UTC) #53
elad.alon_webrtc.org
Will do; thanks for the input. https://codereview.webrtc.org/2629883003/diff/300001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h File webrtc/voice_engine/transport_feedback_packet_loss_tracker.h (right): https://codereview.webrtc.org/2629883003/diff/300001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h#newcode25 webrtc/voice_engine/transport_feedback_packet_loss_tracker.h:25: class TransportFeedbackPacketLossTracker final ...
3 years, 10 months ago (2017-02-01 15:58:56 UTC) #54
commit-bot: I haz the power
Committed patchset #17 (id:320001) as https://chromium.googlesource.com/external/webrtc/+/d83b9670a67c1445a81a3cf20984185c99faa3dc
3 years, 10 months ago (2017-02-01 16:36:17 UTC) #57
minyue-webrtc
some post-submit comment (only comments, no action need from my side.) https://codereview.webrtc.org/2629883003/diff/300001/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h File webrtc/voice_engine/transport_feedback_packet_loss_tracker.h (right): ...
3 years, 10 months ago (2017-02-01 16:39:25 UTC) #58
minyue-webrtc
On 2017/02/01 16:39:25, minyue-webrtc wrote: > some post-submit comment (only comments, no action need from ...
3 years, 10 months ago (2017-02-01 16:40:31 UTC) #59
sprang_webrtc
On 2017/02/01 16:39:25, minyue-webrtc wrote: > some post-submit comment (only comments, no action need from ...
3 years, 10 months ago (2017-02-02 09:48:40 UTC) #60
stefan-webrtc
3 years, 10 months ago (2017-02-02 09:57:31 UTC) #61
Message was sent while issue was closed.
On 2017/02/02 09:48:40, språng wrote:
> On 2017/02/01 16:39:25, minyue-webrtc wrote:
> > some post-submit comment (only comments, no action need from my side.)
> > 
> >
>
https://codereview.webrtc.org/2629883003/diff/300001/webrtc/voice_engine/tran...
> > File webrtc/voice_engine/transport_feedback_packet_loss_tracker.h (right):
> > 
> >
>
https://codereview.webrtc.org/2629883003/diff/300001/webrtc/voice_engine/tran...
> > webrtc/voice_engine/transport_feedback_packet_loss_tracker.h:25: class
> > TransportFeedbackPacketLossTracker final {
> > On 2017/02/01 15:58:56, elad.alon wrote:
> > > On 2017/02/01 15:52:22, språng wrote:
> > > > On 2017/02/01 15:25:50, elad.alon wrote:
> > > > > On 2017/02/01 14:27:19, språng wrote:
> > > > > > Why final?
> > > > > 
> > > > > Are there arguments against marking classes as "final" when nobody
> expects
> > > to
> > > > be
> > > > > sub-classing them?
> > > > > I've checked https://google.github.io/styleguide/cppguide.html for
> > > guidelines
> > > > on
> > > > > this, and could only find:
> > > > > 
> > > > > "Explicitly annotate overrides of virtual functions or virtual
> destructors
> > > > with
> > > > > an override or (less frequently) final specifier."
> > > > > 
> > > > > Admittedly, this only refers to virtual functions, not to classes.
> > > > 
> > > > I think final is only rarely used, to indicate that it strictly
forbidden
> to
> > > > subclass something, perhaps for security reasons or that something can
> > subtly
> > > > break because components have made dangerous assumptions.
> > > > It's not at all uncommon that classes are inherited from at some point
or
> > > other,
> > > > most commonly for testing purposes.
> > > 
> > > If Minyue doesn't object, I could remove the "final" keyword in the next
CL.
> > But
> > > for my two cents, I think it would be good to have it here until someone
> does
> > > really need to inherit from the class, since knowing if there aren any
> > > sub-classes is something that a modifier of the class would be interested
> in.
> > 
> > it looks like that audio team prefers using "final" on all class
> implementation,
> > leaving only non-virtual class non-virtual. I have been convinced that this
is
> a
> > good practice. But I am open-minded.
> 
> That's the first I've heard about that, and I'm not sure I agree.
> For some classes, such as RplrState, I would agree. For more complex classes
> that
> are designed to interact in a specific way with other components, I'd rather
> have
> it mandatory to make it virtual and provide a mock for testing. For this class
> I think it would also make sense to expose some things as protected so that we
> could move the Validate() method to the tests.
> 
> Our code base suffers a lot from poor testability because we have nested
complex
> classes and so end up with more like loose integration tests than unit tests
in
> many places. But that's perhaps a topic for discussion outside of this cl :)
> 
> >
>
https://codereview.webrtc.org/2629883003/diff/300001/webrtc/voice_engine/tran...
> > webrtc/voice_engine/transport_feedback_packet_loss_tracker.h:84:
> PlrState(size_t
> > min_num_packets)
> > On 2017/02/01 15:52:22, språng wrote:
> > > On 2017/02/01 15:25:50, elad.alon wrote:
> > > > On 2017/02/01 14:27:19, språng wrote:
> > > > > explicit
> > > > > 
> > > > > Would prefer to initialize everything in the initializer list.
> > > > > If you need to do a reset you can just create a new instance and
assign
> > it?
> > > > 
> > > > * Will add "explicit".
> > > > * Assigning a new object has its own associated problems. We either use
a
> > > > std::unique_ptr to hold the object, which has a (small) additional cost,
> or
> > we
> > > > use bitwise-assignment, which introduces the restriction on the struct
> that
> > it
> > > > must remain bitwise-assignable. Stefan has suggested this before; me and
> > > Minyue
> > > > seem to prefer Reset(). I am not sure if Stefan was convinced by my
> > arguments
> > > > against, at the time. Any thoughts?
> > > 
> > > I generally dislike reset methods, unless it's a very specific case like
> > > containers. The usually seems to be only used by tests, and in that case I
> > don't
> > > think it's worth worrying over the minor performance aspects. It also
makes
> it
> > > harder for static analysis tools to reason about initialization and if we
> have
> > > const elements (like here), we split up initialization into two places
which
> > > makes it harder to read and keep in sync.
> > > 
> > 
> > It feels natural to use Reset() here since the
> > TransportFeedbackPacketLossTracker has a Reset() method.
> > What does not get reset in this class is min_num_packets_ which would
> otherwise
> > need to be stored in TransportFeedbackPacketLossTracker to be able to do a
> > Reset(). So I think, we either find a way to remove all Resets, or we keep
all
> > of them.
> 
> You don't need to store it externally since it's a public member of the
struct.
> plr_state_ = PlrState(plr_state_.min_num_packets_);
> 
> I'd lean toward removing all resets.

+1 to removing resets.

Powered by Google App Engine
This is Rietveld 408576698