// 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 MEDIA_CAST_SENDER_VIDEO_FRAME_FACTORY_H_
#define MEDIA_CAST_SENDER_VIDEO_FRAME_FACTORY_H_

#include <memory>

#include "base/time/time.h"

namespace gfx {
class Size;
}

namespace media {

class VideoFrame;

namespace cast {

// Interface for an object capable of vending video frames. There is no
// requirement for a |VideoFrameFactory| to be concurrent but it must not be
// pinned to a specific thread. Indeed, |VideoFrameFactory| implementations are
// created by cast on the main cast thread then used by unknown client threads
// via the |VideoFrameInput| interface.
//
// Clients are responsible for serialzing access to a |VideoFrameFactory|.
// Generally speaking, it is expected that a client will be using these objects
// from a rendering thread or callback (which may execute on different threads
// but never concurrently with itself).
class VideoFrameFactory {
 public:
  virtual ~VideoFrameFactory() {}

  // Creates a |VideoFrame| suitable for input via |InsertRawVideoFrame|. Frames
  // obtained in this manner may provide benefits such memory reuse and affinity
  // with the encoder. The format is guaranteed to be I420 or NV12.
  //
  // This can transiently return null if the encoder is not yet initialized or
  // is re-initializing. Note however that if an encoder does support optimized
  // frames, its |VideoFrameFactory| must eventually return frames. In practice,
  // this means that |MaybeCreateFrame| must somehow signal the encoder to
  // perform whatever initialization is needed to eventually produce frames.
  virtual scoped_refptr<VideoFrame> MaybeCreateFrame(
      const gfx::Size& frame_size, base::TimeDelta timestamp) = 0;
};

}  // namespace cast
}  // namespace media

#endif  // MEDIA_CAST_SENDER_VIDEO_FRAME_FACTORY_H_
