#include "components/viz/host/client_frame_sink_video_capturer.h"
#include <utility>
#include "base/functional/bind.h"
#include "base/not_fatal_until.h"
#include "base/ranges/algorithm.h"
#include "base/task/single_thread_task_runner.h"
#include "media/capture/mojom/video_capture_buffer.mojom.h"
#include "media/capture/mojom/video_capture_types.mojom.h"
namespace viz {
namespace {
constexpr base::TimeDelta kReEstablishConnectionDelay = …;
}
ClientFrameSinkVideoCapturer::ClientFrameSinkVideoCapturer(
EstablishConnectionCallback callback)
: … { … }
ClientFrameSinkVideoCapturer::~ClientFrameSinkVideoCapturer() { … }
void ClientFrameSinkVideoCapturer::SetFormat(media::VideoPixelFormat format) { … }
void ClientFrameSinkVideoCapturer::SetMinCapturePeriod(
base::TimeDelta min_capture_period) { … }
void ClientFrameSinkVideoCapturer::SetMinSizeChangePeriod(
base::TimeDelta min_period) { … }
void ClientFrameSinkVideoCapturer::SetResolutionConstraints(
const gfx::Size& min_size,
const gfx::Size& max_size,
bool use_fixed_aspect_ratio) { … }
void ClientFrameSinkVideoCapturer::SetAutoThrottlingEnabled(bool enabled) { … }
void ClientFrameSinkVideoCapturer::ChangeTarget(
const std::optional<VideoCaptureTarget>& target) { … }
void ClientFrameSinkVideoCapturer::ChangeTarget(
const std::optional<VideoCaptureTarget>& target,
uint32_t sub_capture_target_version) { … }
void ClientFrameSinkVideoCapturer::Start(
mojom::FrameSinkVideoConsumer* consumer,
mojom::BufferFormatPreference buffer_format_preference) { … }
void ClientFrameSinkVideoCapturer::Stop() { … }
void ClientFrameSinkVideoCapturer::StopAndResetConsumer() { … }
void ClientFrameSinkVideoCapturer::RequestRefreshFrame() { … }
std::unique_ptr<ClientFrameSinkVideoCapturer::Overlay>
ClientFrameSinkVideoCapturer::CreateOverlay(int32_t stacking_index) { … }
ClientFrameSinkVideoCapturer::ResolutionConstraints::ResolutionConstraints(
const gfx::Size& min_size,
const gfx::Size& max_size,
bool use_fixed_aspect_ratio)
: … { … }
void ClientFrameSinkVideoCapturer::OnFrameCaptured(
media::mojom::VideoBufferHandlePtr data,
media::mojom::VideoFrameInfoPtr info,
const gfx::Rect& content_rect,
mojo::PendingRemote<mojom::FrameSinkVideoConsumerFrameCallbacks>
callbacks) { … }
void ClientFrameSinkVideoCapturer::OnFrameWithEmptyRegionCapture() { … }
void ClientFrameSinkVideoCapturer::OnNewSubCaptureTargetVersion(
uint32_t sub_capture_target_version) { … }
void ClientFrameSinkVideoCapturer::OnLog(const std::string& message) { … }
void ClientFrameSinkVideoCapturer::OnStopped() { … }
void ClientFrameSinkVideoCapturer::EstablishConnection() { … }
void ClientFrameSinkVideoCapturer::OnConnectionError() { … }
void ClientFrameSinkVideoCapturer::StartInternal() { … }
void ClientFrameSinkVideoCapturer::OnOverlayDestroyed(Overlay* overlay) { … }
ClientFrameSinkVideoCapturer::Overlay::Overlay(
base::WeakPtr<ClientFrameSinkVideoCapturer> client_capturer,
int32_t stacking_index)
: … { … }
ClientFrameSinkVideoCapturer::Overlay::~Overlay() { … }
void ClientFrameSinkVideoCapturer::Overlay::SetImageAndBounds(
const SkBitmap& image,
const gfx::RectF& bounds) { … }
void ClientFrameSinkVideoCapturer::Overlay::SetBounds(
const gfx::RectF& bounds) { … }
void ClientFrameSinkVideoCapturer::Overlay::OnCapturedMouseEvent(
const gfx::Point& coordinates) { … }
void ClientFrameSinkVideoCapturer::Overlay::DisconnectPermanently() { … }
void ClientFrameSinkVideoCapturer::Overlay::EstablishConnection(
mojom::FrameSinkVideoCapturer* capturer) { … }
}