// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef COBALT_MEDIA_CAST_SENDER_SOFTWARE_VIDEO_ENCODER_H_
#define COBALT_MEDIA_CAST_SENDER_SOFTWARE_VIDEO_ENCODER_H_

#include "base/memory/ref_counted.h"
#include "media/cast/sender/sender_encoded_frame.h"
#include "starboard/types.h"

namespace base {
class TimeTicks;
}

namespace cobalt {
namespace media {
class VideoFrame;
}

namespace cobalt {
namespace media {
namespace cast {

class SoftwareVideoEncoder {
 public:
  virtual ~SoftwareVideoEncoder() {}

  // Initialize the encoder before Encode() can be called. This method
  // must be called on the thread that Encode() is called.
  virtual void Initialize() = 0;

  // Encode a raw image (as a part of a video stream).
  virtual void Encode(const scoped_refptr<media::VideoFrame>& video_frame,
                      const base::TimeTicks& reference_time,
                      SenderEncodedFrame* encoded_frame) = 0;

  // Update the encoder with a new target bit rate.
  virtual void UpdateRates(uint32_t new_bitrate) = 0;

  // Set the next frame to be a key frame.
  virtual void GenerateKeyFrame() = 0;
};

}  // namespace cast
}  // namespace media
}  // namespace cobalt

#endif  // COBALT_MEDIA_CAST_SENDER_SOFTWARE_VIDEO_ENCODER_H_
