/* * Copyright (c) 2013 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_VIDEO_ENGINE_VIDEO_SEND_STREAM_IMPL_H_ #define WEBRTC_VIDEO_ENGINE_VIDEO_SEND_STREAM_IMPL_H_ #include #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" #include "webrtc/video/transport_adapter.h" #include "webrtc/video_receive_stream.h" #include "webrtc/video_send_stream.h" namespace webrtc { class VideoEngine; class ViEBase; class ViECapture; class ViECodec; class ViEExternalCapture; class ViEExternalCodec; class ViEImageProcess; class ViENetwork; class ViERTP_RTCP; namespace internal { class ResolutionAdaptor; class VideoSendStream : public webrtc::VideoSendStream, public VideoSendStreamInput { public: VideoSendStream(newapi::Transport* transport, bool overuse_detection, webrtc::VideoEngine* video_engine, const VideoSendStream::Config& config); virtual ~VideoSendStream(); virtual void PutFrame(const I420VideoFrame& frame, uint32_t time_since_capture_ms) OVERRIDE; virtual VideoSendStreamInput* Input() OVERRIDE; virtual void StartSend() OVERRIDE; virtual void StopSend() OVERRIDE; virtual bool SetTargetBitrate(int min_bitrate, int max_bitrate, const std::vector& streams) OVERRIDE; virtual void GetSendCodec(VideoCodec* send_codec) OVERRIDE; public: bool DeliverRtcp(const uint8_t* packet, size_t length); private: TransportAdapter transport_adapter_; VideoSendStream::Config config_; ViEBase* video_engine_base_; ViECapture* capture_; ViECodec* codec_; ViEExternalCapture* external_capture_; ViEExternalCodec* external_codec_; ViENetwork* network_; ViERTP_RTCP* rtp_rtcp_; ViEImageProcess* image_process_; int channel_; int capture_id_; scoped_ptr overuse_observer_; }; } // namespace internal } // namespace webrtc #endif // WEBRTC_VIDEO_ENGINE_INTERNAL_VIDEO_SEND_STREAM_H_