webrtc_m130/modules/rtp_rtcp/source/fec_private_tables_bursty.h
Tommi f7132b5206 Move the FEC private tables into .cc files.
Change the arrays to be continuous uint8_t arrays instead
being of arrays of arrays (of arrays).
Code size difference is 17K for arm, ~42K for arm64.

New lookup algorithm, tailored for these two tables + tests.

Instead of returning a raw pointer into the table, the algorithm
returns an ArrayView, which includes size information for how much
memory can be read.

Change-Id: I000b094520bac944e518eb8b51d8dbef4670f5d7
Bug: webrtc:9102
Reviewed-on: https://webrtc-review.googlesource.com/65920
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22736}
2018-04-04 15:16:10 +00:00

40 lines
1.7 KiB
C++

/*
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef MODULES_RTP_RTCP_SOURCE_FEC_PRIVATE_TABLES_BURSTY_H_
#define MODULES_RTP_RTCP_SOURCE_FEC_PRIVATE_TABLES_BURSTY_H_
// This file contains a set of packets masks for the FEC code. The masks in
// this table are specifically designed to favor recovery of bursty/consecutive
// loss network conditions. The tradeoff is worse recovery for random losses.
// These packet masks are currently defined to protect up to 12 media packets.
// They have the following property: for any packet mask defined by the
// parameters (k,m), where k = number of media packets, m = number of FEC
// packets, all "consecutive" losses of size <= m are completely recoverable.
// By consecutive losses we mean consecutive with respect to the sequence
// number ordering of the list (media and FEC) of packets. The difference
// between these masks (|kFecMaskBursty|) and |kFecMaskRandom| type, defined
// in fec_private_tables.h, is more significant for longer codes
// (i.e., more packets/symbols in the code, so larger (k,m), i.e., k > 4,
// m > 3).
#include <cstddef>
#include "typedefs.h" // NOLINT(build/include)
namespace webrtc {
namespace fec_private_tables {
extern const uint8_t kPacketMaskBurstyTbl[];
} // namespace fec_private_tables
} // namespace webrtc
#endif // MODULES_RTP_RTCP_SOURCE_FEC_PRIVATE_TABLES_BURSTY_H_