/* * 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_FORWARD_ERROR_CORRECTION_H_ #define MODULES_RTP_RTCP_SOURCE_FORWARD_ERROR_CORRECTION_H_ #include <stddef.h> #include <stdint.h> #include <list> #include <memory> #include <vector> #include "absl/container/inlined_vector.h" #include "api/scoped_refptr.h" #include "api/units/timestamp.h" #include "modules/include/module_fec_types.h" #include "modules/rtp_rtcp/include/rtp_header_extension_map.h" #include "modules/rtp_rtcp/include/rtp_rtcp_defines.h" #include "modules/rtp_rtcp/source/forward_error_correction_internal.h" #include "rtc_base/copy_on_write_buffer.h" namespace webrtc { class FecHeaderReader; class FecHeaderWriter; // Performs codec-independent forward error correction (FEC), based on RFC 5109. // Option exists to enable unequal protection (UEP) across packets. // This is not to be confused with protection within packets // (referred to as uneven level protection (ULP) in RFC 5109). // TODO(brandtr): Split this class into a separate encoder // and a separate decoder. class ForwardErrorCorrection { … }; // Classes derived from FecHeader{Reader,Writer} encapsulate the // specifics of reading and writing FEC header for, e.g., ULPFEC // and FlexFEC. class FecHeaderReader { … }; class FecHeaderWriter { … }; } // namespace webrtc #endif // MODULES_RTP_RTCP_SOURCE_FORWARD_ERROR_CORRECTION_H_