chromium/media/capture/video/video_capture_effects_processor.h

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

#ifndef MEDIA_CAPTURE_VIDEO_VIDEO_CAPTURE_EFFECTS_PROCESSOR_H_
#define MEDIA_CAPTURE_VIDEO_VIDEO_CAPTURE_EFFECTS_PROCESSOR_H_

#include <optional>

#include "base/memory/scoped_refptr.h"
#include "base/memory/weak_ptr.h"
#include "base/sequence_checker.h"
#include "base/task/sequenced_task_runner.h"
#include "base/trace_event/trace_id_helper.h"
#include "base/types/expected.h"
#include "gpu/command_buffer/client/shared_image_interface.h"
#include "media/capture/capture_export.h"
#include "media/capture/mojom/video_capture_buffer.mojom-forward.h"
#include "media/capture/video/video_capture_device.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/video_effects/public/mojom/video_effects_processor.mojom.h"

namespace media {

// Structure used to pass information about a post-processed video frame.
// Equivalent to `std::pair<VideoCaptureDevice::Client::Buffer,
// mojom::VideoFrameInfoPtr>`.
struct CAPTURE_EXPORT PostProcessDoneInfo {};

// Companion class of `VideoCaptureDeviceClient`, used when video effects are
// enabled. Responsible for marshaling video frame data so that it's suitable
// for an IPC to Video Effects Processor, and for actually invoking the
// processor.
class CAPTURE_EXPORT VideoCaptureEffectsProcessor {};

}  // namespace media

#endif  // MEDIA_CAPTURE_VIDEO_VIDEO_CAPTURE_EFFECTS_PROCESSOR_H_