blob: 96c51b5fb1123d9228a8efa198740ca297f9334c [file] [log] [blame]
// Copyright 2018 The Chromium OS 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_PERCEPTION_MEDIA_PERCEPTION_SERVICE_IMPL_H_
#define MEDIA_PERCEPTION_MEDIA_PERCEPTION_SERVICE_IMPL_H_
#include <memory>
#include <mojo/public/cpp/bindings/pending_receiver.h>
#include <mojo/public/cpp/bindings/pending_remote.h>
#include <mojo/public/cpp/bindings/receiver.h>
#include <mojo/public/cpp/bindings/remote.h>
#include "media_perception/chrome_audio_service_client.h"
#include "media_perception/rtanalytics.h"
#include "media_perception/video_capture_service_client.h"
#include "mojom/media_perception_service.mojom.h"
namespace mri {
class MediaPerceptionServiceImpl
: public chromeos::media_perception::mojom::MediaPerceptionService {
public:
// Creates an instance bound to |pipe|. The specified
// |connection_error_handler| will be invoked if the binding encounters a
// connection error.
MediaPerceptionServiceImpl(
mojo::ScopedMessagePipeHandle pipe,
base::Closure connection_error_handler,
std::shared_ptr<VideoCaptureServiceClient> video_capture_service_client,
std::shared_ptr<ChromeAudioServiceClient> chrome_audio_service_client,
std::shared_ptr<Rtanalytics> rtanalytics);
MediaPerceptionServiceImpl(const MediaPerceptionServiceImpl&) = delete;
MediaPerceptionServiceImpl& operator=(const MediaPerceptionServiceImpl&) =
delete;
void ConnectToVideoCaptureService(
mojo::PendingReceiver<video_capture::mojom::VideoSourceProvider>
receiver);
// chromeos::media_perception::mojom::MediaPerceptionService:
void GetController(
mojo::PendingReceiver<
chromeos::media_perception::mojom::MediaPerceptionController>
receiver,
mojo::PendingRemote<
chromeos::media_perception::mojom::MediaPerceptionControllerClient>
client) override;
private:
mojo::Remote<
chromeos::media_perception::mojom::MediaPerceptionControllerClient>
client_;
mojo::Receiver<chromeos::media_perception::mojom::MediaPerceptionService>
receiver_;
std::shared_ptr<VideoCaptureServiceClient> video_capture_service_client_;
std::shared_ptr<ChromeAudioServiceClient> chrome_audio_service_client_;
std::shared_ptr<Rtanalytics> rtanalytics_;
};
} // namespace mri
#endif // MEDIA_PERCEPTION_MEDIA_PERCEPTION_SERVICE_IMPL_H_