// Copyright 2018 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_GPU_TEST_VIDEO_PLAYER_FRAME_RENDERER_H_
#define MEDIA_GPU_TEST_VIDEO_PLAYER_FRAME_RENDERER_H_

#include "base/memory/scoped_refptr.h"
#include "media/base/video_frame.h"
#include "media/base/video_types.h"
#include "media/video/picture.h"
#include "ui/gfx/geometry/size.h"

namespace gl {

class GLContext;

}  // namespace gl

namespace media {

class VideoFrame;

namespace test {

// The frame renderer interface can be used to render decoded frames to screen,
// file,... It is responsible for creating picture buffers and maintaining a GL
// context.
class FrameRenderer {
 public:
  virtual ~FrameRenderer() = default;
  // Acquire the GL context for the current thread. This is needed if the
  // context is shared between multiple threads.
  virtual bool AcquireGLContext() = 0;
  // Get the current GL context.
  virtual gl::GLContext* GetGLContext() = 0;

  // Render the specified video frame. Once rendering is done the reference to
  // the |video_frame| should be dropped so the video frame can be reused. If
  // the specified frame is an EOS frame, the frame renderer will assume the
  // next frame received is unrelated to the previous one, and any internal
  // state can be reset. This is e.g. important when calculating the frame
  // drop rate.
  virtual void RenderFrame(scoped_refptr<VideoFrame> video_frame) = 0;
  // Wait until all currently queued frames are rendered. This function might
  // take some time to complete, depending on the number of frames queued.
  virtual void WaitUntilRenderingDone() = 0;

  // Create a texture-backed video frame with specified |pixel_format|, |size|
  // and |texture_target|. The texture's id will be put in |texture_id|.
  // TODO(dstaessens@) Remove when allocate mode is removed.
  virtual scoped_refptr<VideoFrame> CreateVideoFrame(
      VideoPixelFormat pixel_format,
      const gfx::Size& size,
      uint32_t texture_target,
      uint32_t* texture_id) = 0;
};

}  // namespace test
}  // namespace media

#endif  // MEDIA_GPU_TEST_VIDEO_PLAYER_FRAME_RENDERER_H_
