Separate Call API/build files from video_engine/. BUG=2535 R=andrew@webrtc.org, mflodman@webrtc.org, niklas.enbom@webrtc.org Review URL: https://webrtc-codereview.appspot.com/2659004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5042 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/video/video_send_stream.h b/webrtc/video/video_send_stream.h new file mode 100644 index 0000000..304d825 --- /dev/null +++ b/webrtc/video/video_send_stream.h
@@ -0,0 +1,85 @@ +/* + * 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 <vector> + +#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<SimulcastStream>& 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<ResolutionAdaptor> overuse_observer_; +}; +} // namespace internal +} // namespace webrtc + +#endif // WEBRTC_VIDEO_ENGINE_INTERNAL_VIDEO_SEND_STREAM_H_