#ifndef MEDIA_BASE_MEDIA_CHANNEL_H_
#define MEDIA_BASE_MEDIA_CHANNEL_H_
#include <map>
#include <memory>
#include <set>
#include <string>
#include <utility>
#include <vector>
#include "absl/types/optional.h"
#include "api/audio/audio_processing_statistics.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/audio_options.h"
#include "api/call/audio_sink.h"
#include "api/crypto/frame_decryptor_interface.h"
#include "api/crypto/frame_encryptor_interface.h"
#include "api/frame_transformer_interface.h"
#include "api/media_stream_interface.h"
#include "api/rtc_error.h"
#include "api/rtp_parameters.h"
#include "api/rtp_sender_interface.h"
#include "api/task_queue/pending_task_safety_flag.h"
#include "api/transport/data_channel_transport_interface.h"
#include "api/transport/rtp/rtp_source.h"
#include "api/units/time_delta.h"
#include "api/units/timestamp.h"
#include "api/video/video_content_type.h"
#include "api/video/video_sink_interface.h"
#include "api/video/video_source_interface.h"
#include "api/video/video_timing.h"
#include "api/video_codecs/scalability_mode.h"
#include "api/video_codecs/video_encoder_factory.h"
#include "call/video_receive_stream.h"
#include "common_video/include/quality_limitation_reason.h"
#include "media/base/codec.h"
#include "media/base/media_constants.h"
#include "media/base/stream_params.h"
#include "modules/rtp_rtcp/include/report_block_data.h"
#include "modules/rtp_rtcp/source/rtp_packet_received.h"
#include "rtc_base/async_packet_socket.h"
#include "rtc_base/buffer.h"
#include "rtc_base/copy_on_write_buffer.h"
#include "rtc_base/dscp.h"
#include "rtc_base/logging.h"
#include "rtc_base/network_route.h"
#include "rtc_base/socket.h"
#include "rtc_base/string_encode.h"
#include "rtc_base/strings/string_builder.h"
#include "video/config/video_encoder_config.h"
namespace rtc {
class Timing;
}
namespace webrtc {
class VideoFrame;
webrtc::RTCError InvokeSetParametersCallback(SetParametersCallback& callback,
RTCError error);
}
namespace cricket {
class AudioSource;
class VideoCapturer;
struct RtpHeader;
struct VideoFormat;
class VideoMediaSendChannelInterface;
class VideoMediaReceiveChannelInterface;
class VoiceMediaSendChannelInterface;
class VoiceMediaReceiveChannelInterface;
const int kScreencastDefaultFps = …;
template <class T>
static std::string ToStringIfSet(const char* key,
const absl::optional<T>& val) { … }
template <class T>
static std::string VectorToString(const std::vector<T>& vals) { … }
struct VideoOptions { … };
class MediaChannelNetworkInterface { … };
class MediaSendChannelInterface { … };
class MediaReceiveChannelInterface { … };
struct SsrcSenderInfo { … };
struct SsrcReceiverInfo { … };
struct MediaSenderInfo { … };
struct MediaReceiverInfo { … };
struct VoiceSenderInfo : public MediaSenderInfo { … };
struct VoiceReceiverInfo : public MediaReceiverInfo { … };
struct VideoSenderInfo : public MediaSenderInfo { … };
struct VideoReceiverInfo : public MediaReceiverInfo { … };
struct BandwidthEstimationInfo { … };
RtpCodecParametersMap;
struct VoiceMediaSendInfo { … };
struct VoiceMediaReceiveInfo { … };
struct VoiceMediaInfo { … };
struct VideoMediaSendInfo { … };
struct VideoMediaReceiveInfo { … };
struct VideoMediaInfo { … };
struct RtcpParameters { … };
struct MediaChannelParameters { … };
struct SenderParameters : MediaChannelParameters { … };
struct AudioSenderParameter : SenderParameters { … };
struct AudioReceiverParameters : MediaChannelParameters { … };
class VoiceMediaSendChannelInterface : public MediaSendChannelInterface { … };
class VoiceMediaReceiveChannelInterface : public MediaReceiveChannelInterface { … };
struct VideoSenderParameters : SenderParameters { … };
struct VideoReceiverParameters : MediaChannelParameters { … };
class VideoMediaSendChannelInterface : public MediaSendChannelInterface { … };
class VideoMediaReceiveChannelInterface : public MediaReceiveChannelInterface { … };
}
#endif