Chromium Code Reviews| Index: media/cast/video_sender/video_encoder.h |
| diff --git a/media/cast/video_sender/video_encoder.h b/media/cast/video_sender/video_encoder.h |
| index 559dff16734fd4c9e72f1c2b8aa1a52d0e90ce73..f67bd1cf10548a886645459a964d78292fc22b79 100644 |
| --- a/media/cast/video_sender/video_encoder.h |
| +++ b/media/cast/video_sender/video_encoder.h |
| @@ -5,76 +5,51 @@ |
| #ifndef MEDIA_CAST_VIDEO_SENDER_VIDEO_ENCODER_H_ |
| #define MEDIA_CAST_VIDEO_SENDER_VIDEO_ENCODER_H_ |
| +#include "base/callback.h" |
| +#include "base/memory/ref_counted.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/memory/weak_ptr.h" |
| -#include "base/message_loop/message_loop.h" |
| +#include "base/time/time.h" |
| +#include "media/base/video_frame.h" |
| #include "media/cast/cast_config.h" |
| #include "media/cast/cast_environment.h" |
| -#include "media/cast/video_sender/codecs/vp8/vp8_encoder.h" |
| - |
| -namespace media { |
| -class VideoFrame; |
| -} |
| namespace media { |
| namespace cast { |
| -// This object is called external from the main cast thread and internally from |
| -// the video encoder thread. |
| -class VideoEncoder : public VideoEncoderController { |
| +// All these functions are called from the main cast thread. |
| +class VideoEncoder { |
| public: |
| typedef base::Callback<void(scoped_ptr<EncodedVideoFrame>, |
| const base::TimeTicks&)> FrameEncodedCallback; |
| - VideoEncoder(scoped_refptr<CastEnvironment> cast_environment, |
| - const VideoSenderConfig& video_config, |
| - uint8 max_unacked_frames); |
| - |
| - virtual ~VideoEncoder(); |
| - |
| - // Called from the main cast thread. This function post the encode task to the |
| - // video encoder thread; |
| // The video_frame must be valid until the closure callback is called. |
| // The closure callback is called from the video encoder thread as soon as |
| // the encoder is done with the frame; it does not mean that the encoded frame |
| // has been sent out. |
| // Once the encoded frame is ready the frame_encoded_callback is called. |
| - bool EncodeVideoFrame(const scoped_refptr<media::VideoFrame>& video_frame, |
| - const base::TimeTicks& capture_time, |
| - const FrameEncodedCallback& frame_encoded_callback); |
| - |
| - protected: |
| - struct CodecDynamicConfig { |
| - bool key_frame_requested; |
| - uint32 latest_frame_id_to_reference; |
| - int bit_rate; |
| - }; |
| - |
| - // The actual encode, called from the video encoder thread. |
| - void EncodeVideoFrameEncoderThread( |
| + virtual bool EncodeVideoFrame( |
| const scoped_refptr<media::VideoFrame>& video_frame, |
| const base::TimeTicks& capture_time, |
| - const CodecDynamicConfig& dynamic_config, |
| - const FrameEncodedCallback& frame_encoded_callback); |
| + const FrameEncodedCallback& frame_encoded_callback) = 0; |
| + |
| + // Inform the encoder about the new target bit rate. |
| + virtual void SetBitRate(int new_bit_rate) = 0; |
| + |
| + // Inform the encoder to not encode the next frame. |
| + // Note: this setting is sticky and should last until called with false. |
| + virtual void SkipNextFrame(bool skip_next_frame) = 0; |
| - // The following functions are called from the main cast thread. |
| - virtual void SetBitRate(int new_bit_rate) OVERRIDE; |
| - virtual void SkipNextFrame(bool skip_next_frame) OVERRIDE; |
| - virtual void GenerateKeyFrame() OVERRIDE; |
| - virtual void LatestFrameIdToReference(uint32 frame_id) OVERRIDE; |
| - virtual int NumberOfSkippedFrames() const OVERRIDE; |
| + // Inform the encoder to encode the next frame as a key frame. |
| + virtual void GenerateKeyFrame() = 0; |
| - private: |
| - friend class base::RefCountedThreadSafe<VideoEncoder>; |
| + // Inform the encoder to only reference frames older or equal to frame_id; |
| + virtual void LatestFrameIdToReference(uint32 frame_id) = 0; |
| - const VideoSenderConfig video_config_; |
| - scoped_refptr<CastEnvironment> cast_environment_; |
| - scoped_ptr<Vp8Encoder> vp8_encoder_; |
| - CodecDynamicConfig dynamic_config_; |
| - bool skip_next_frame_; |
| - int skip_count_; |
| + // Query the codec about how many frames it has skipped due to slow ACK. |
| + virtual int NumberOfSkippedFrames() const = 0; |
| - DISALLOW_COPY_AND_ASSIGN(VideoEncoder); |
| + virtual ~VideoEncoder() {} |
|
mikhal1
2013/12/17 22:39:47
Doesn't this belong on the top? Just as a conventi
pwestin
2013/12/19 16:03:47
Done.
|
| }; |
| } // namespace cast |