Index: webrtc/video/vie_encoder.h |
diff --git a/webrtc/video/vie_encoder.h b/webrtc/video/vie_encoder.h |
index d3ac0f945f5d69c7e977a355e536dd540512d348..3d05a157e7e039de0f7535a01e34cea69e871d2b 100644 |
--- a/webrtc/video/vie_encoder.h |
+++ b/webrtc/video/vie_encoder.h |
@@ -33,7 +33,6 @@ class Config; |
class EncodedImageCallback; |
class OveruseFrameDetector; |
class PacedSender; |
-class PayloadRouter; |
class ProcessThread; |
class QMVideoSettingsCallback; |
class SendStatisticsProxy; |
@@ -41,6 +40,16 @@ class ViEBitrateObserver; |
class ViEEffectFilter; |
class VideoEncoder; |
+// VieEncoder represent a video encoder that accepts raw video frames as input |
+// and produces an encoded bit stream. |
+// Usage: |
+// 1. Instantiate |
+// 2. Call Init |
+// 3. Call RegisterExternalEncoder if available. |
+// 4. Call SetEncoder with the codec settings and the object that shall receive |
+// the encoded bit stream. |
+// 5. Call Start. |
+// 6. For each available raw video frame call EncodeVideoFrame. |
class ViEEncoder : public VideoEncoderRateObserver, |
public EncodedImageCallback, |
public VCMPacketizationCallback, |
@@ -55,9 +64,7 @@ class ViEEncoder : public VideoEncoderRateObserver, |
// TODO(nisse): Used only for tests, delete? |
rtc::VideoSinkInterface<VideoFrame>* pre_encode_callback, |
OveruseFrameDetector* overuse_detector, |
- PacedSender* pacer, |
- PayloadRouter* payload_router, |
- EncodedImageCallback* post_encode_callback); |
+ PacedSender* pacer); |
~ViEEncoder(); |
bool Init(); |
@@ -69,16 +76,19 @@ class ViEEncoder : public VideoEncoderRateObserver, |
// Returns the id of the owning channel. |
int Owner() const; |
+ void Start(); |
// Drops incoming packets before they get to the encoder. |
void Pause(); |
- void Restart(); |
// Codec settings. |
int32_t RegisterExternalEncoder(VideoEncoder* encoder, |
uint8_t pl_type, |
bool internal_source); |
int32_t DeRegisterExternalEncoder(uint8_t pl_type); |
- void SetEncoder(const VideoCodec& video_codec, int min_transmit_bitrate_bps); |
+ void SetEncoder(const VideoCodec& video_codec, |
+ int min_transmit_bitrate_bps, |
+ size_t max_data_payload_length, |
+ EncodedImageCallback* sink); |
void EncodeVideoFrame(const VideoFrame& video_frame); |
void SendKeyFrame(); |
@@ -136,8 +146,6 @@ class ViEEncoder : public VideoEncoderRateObserver, |
rtc::VideoSinkInterface<VideoFrame>* const pre_encode_callback_; |
OveruseFrameDetector* const overuse_detector_; |
PacedSender* const pacer_; |
- PayloadRouter* const send_payload_router_; |
- EncodedImageCallback* const post_encode_callback_; |
// The time we last received an input frame or encoded frame. This is used to |
// track when video is stopped long enough that we also want to stop sending |
@@ -151,6 +159,9 @@ class ViEEncoder : public VideoEncoderRateObserver, |
bool encoder_paused_and_dropped_frame_ GUARDED_BY(data_cs_); |
std::vector<int64_t> time_last_intra_request_ms_ GUARDED_BY(data_cs_); |
+ rtc::CriticalSection sink_cs_; |
+ EncodedImageCallback* sink_ GUARDED_BY(sink_cs_); |
+ |
ProcessThread* module_process_thread_; |
bool has_received_sli_ GUARDED_BY(data_cs_); |