webrtc_m130/webrtc/api/call/flexfec_receive_stream.h
brandtr 76648da8dc Add FlexfecReceiveStream.
This class is logically parallel with the {Audio,Video}ReceiveStream
classes. Its purpose is to describe a receive stream of FlexFEC packets,
through the corresponding config.

Functionally, this class simply forwards the received RTP packets
to its FlexfecReceiver, which returns recovered packets to the
Call level, for appropriate demultiplexing based on SSRC.

BUG=webrtc:5654

Review-Url: https://codereview.webrtc.org/2397843005
Cr-Commit-Position: refs/heads/master@{#14704}
2016-10-20 11:54:51 +00:00

56 lines
1.6 KiB
C++

/*
* Copyright (c) 2016 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 WEBRTC_API_CALL_FLEXFEC_RECEIVE_STREAM_H_
#define WEBRTC_API_CALL_FLEXFEC_RECEIVE_STREAM_H_
#include <string>
#include "webrtc/config.h"
namespace webrtc {
// WORK IN PROGRESS!
// This class is under development and it is not yet intended for use outside
// of WebRTC.
//
// TODO(brandtr): Remove this comment when FlexFEC is ready for public use.
class FlexfecReceiveStream {
public:
struct Stats {
std::string ToString(int64_t time_ms) const;
// TODO(brandtr): Add appropriate stats here.
int flexfec_bitrate_bps;
};
// TODO(brandtr): When we add multistream protection, and thus add a
// FlexfecSendStream class, remove FlexfecConfig from config.h and add
// the appropriate configs here and in FlexfecSendStream.
using Config = FlexfecConfig;
// Starts stream activity.
// When a stream is active, it can receive and process packets.
virtual void Start() = 0;
// Stops stream activity.
// When a stream is stopped, it can't receive nor process packets.
virtual void Stop() = 0;
virtual Stats GetStats() const = 0;
protected:
virtual ~FlexfecReceiveStream() = default;
};
} // namespace webrtc
#endif // WEBRTC_API_CALL_FLEXFEC_RECEIVE_STREAM_H_