// Copyright (c) 2012-2017 VideoStitch SAS
// Copyright (c) 2018 stitchEm

#pragma once

#include "gpu/buffer.hpp"

#include "libvideostitch/preprocessor.hpp"

namespace VideoStitch {

class ThreadSafeOstream;

namespace Core {

/**
 * @brief A processor that shows the alpha-masked values by overlaying them
 */
class MaskPreProcessor : public PreProcessor {
 public:
  static MaskPreProcessor* create(const Ptv::Value& config);
  /**
   * @param color tint color.
   */
  explicit MaskPreProcessor(uint32_t color);
  ~MaskPreProcessor();

  Status process(frameid_t frame, GPU::Surface& devBuffer, int64_t width, int64_t height, readerid_t inputId,
                 GPU::Stream& stream) const;
  void getDisplayName(std::ostream& os) const;

 private:
  const uint32_t color;
};
}  // namespace Core
}  // namespace VideoStitch