// Copyright 2020 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_V4L2_BUFFER_AFFINITY_TRACKER_H_
#define MEDIA_GPU_V4L2_BUFFER_AFFINITY_TRACKER_H_

#include <cstddef>
#include <map>

#include "base/synchronization/lock.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "ui/gfx/generic_shared_memory_id.h"

namespace media {

/**
 * Maintains affinity between native handles and V4L2 buffers.
 *
 * Give a handle ID, `get_buffer_for_id()` will attempt to always return the
 * same V4L2 buffer ID so handles are always used with the same buffer. This
 * is both beneficial for performance, and necessary in some cases like the
 * stateful decoder.
 *
 * All the methods of this class are thread-safe.
 */
class BufferAffinityTracker {
 public:
  explicit BufferAffinityTracker(size_t nb_buffers);
  ~BufferAffinityTracker();
  size_t nb_buffers() const { return nb_buffers_; }
  // Resize this tracker and reset its state.
  void resize(size_t nb_buffers);

  /**
   * Return the V4L2 buffer index suitable for this buffer ID.
   *
   * If it is the first time this method is called with a given id, return the
   * first available buffer it can find, and memorize the association between
   * the id and the V4L2 buffer.
   *
   * On subsequent calls with the same id, that same V4L2 buffer will be
   * returned.
   */
  absl::optional<size_t> get_buffer_for_id(gfx::GenericSharedMemoryId id);

 private:
  base::Lock lock_;
  std::map<gfx::GenericSharedMemoryId, size_t> id_to_buffer_map_;
  // Maximum number of buffers we are allowed to track.
  size_t nb_buffers_;
};

}  // namespace media

#endif  // MEDIA_GPU_V4L2_BUFFER_AFFINITY_TRACKER_H_
