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}
40 lines
1.7 KiB
C++
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_
|