Home | History | Annotate | Download | only in sender
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef MEDIA_CAST_SENDER_SOFTWARE_VIDEO_ENCODER_H_
      6 #define MEDIA_CAST_SENDER_SOFTWARE_VIDEO_ENCODER_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/memory/ref_counted.h"
     10 
     11 namespace media {
     12 class VideoFrame;
     13 }
     14 
     15 namespace media {
     16 namespace cast {
     17 struct EncodedFrame;
     18 
     19 class SoftwareVideoEncoder {
     20  public:
     21   virtual ~SoftwareVideoEncoder() {}
     22 
     23   // Initialize the encoder before Encode() can be called. This method
     24   // must be called on the thread that Encode() is called.
     25   virtual void Initialize() = 0;
     26 
     27   // Encode a raw image (as a part of a video stream).
     28   virtual bool Encode(const scoped_refptr<media::VideoFrame>& video_frame,
     29                       EncodedFrame* encoded_image) = 0;
     30 
     31   // Update the encoder with a new target bit rate.
     32   virtual void UpdateRates(uint32 new_bitrate) = 0;
     33 
     34   // Set the next frame to be a key frame.
     35   virtual void GenerateKeyFrame() = 0;
     36 
     37   // Set the last frame to reference.
     38   virtual void LatestFrameIdToReference(uint32 frame_id) = 0;
     39 };
     40 
     41 }  // namespace cast
     42 }  // namespace media
     43 
     44 #endif  // MEDIA_CAST_SENDER_SOFTWARE_VIDEO_ENCODER_H_
     45