blob: 80a7759f41ed8938fce6d4ada6d54ae16662099b [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_MEDIA_EFFECTS_VIDEO_EFFECTS_MANAGER_IMPL_H_
#define COMPONENTS_MEDIA_EFFECTS_VIDEO_EFFECTS_MANAGER_IMPL_H_
#include "base/memory/raw_ptr.h"
#include "media/capture/mojom/video_effects_manager.mojom.h"
#include "mojo/public/cpp/bindings/receiver_set.h"
#include "mojo/public/cpp/bindings/remote_set.h"
class PrefService;
class VideoEffectsManagerImpl
: public media::mojom::ReadonlyVideoEffectsManager {
public:
VideoEffectsManagerImpl(PrefService* pref_service,
base::OnceClosure last_receiver_disconnected_handler);
VideoEffectsManagerImpl(const VideoEffectsManagerImpl&) = delete;
VideoEffectsManagerImpl& operator=(const VideoEffectsManagerImpl&) = delete;
~VideoEffectsManagerImpl() override;
void Bind(mojo::PendingReceiver<media::mojom::ReadonlyVideoEffectsManager>
receiver);
void SetConfiguration(
media::mojom::VideoEffectsConfigurationPtr configuration);
// media::mojom::ReadonlyVideoEffectsManager overrides
void GetConfiguration(GetConfigurationCallback callback) override;
void AddObserver(
mojo::PendingRemote<media::mojom::VideoEffectsConfigurationObserver>
observer) override;
base::WeakPtr<VideoEffectsManagerImpl> GetWeakPtr() {
return weak_ptr_factory_.GetWeakPtr();
}
private:
void OnReceiverDisconnected();
raw_ptr<PrefService> pref_service_;
base::OnceClosure last_receiver_disconnected_handler_;
mojo::ReceiverSet<media::mojom::ReadonlyVideoEffectsManager> receivers_;
media::mojom::VideoEffectsConfigurationPtr configuration_;
mojo::RemoteSet<media::mojom::VideoEffectsConfigurationObserver> observers_;
base::WeakPtrFactory<VideoEffectsManagerImpl> weak_ptr_factory_{this};
};
#endif // COMPONENTS_MEDIA_EFFECTS_VIDEO_EFFECTS_MANAGER_IMPL_H_