blob: 27bf1da91ea86ba4847d49fb5425bad9690e0071 [file] [log] [blame]
// Copyright 2019 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_OUTPUT_MANAGER_H_
#define MEDIA_PERCEPTION_OUTPUT_MANAGER_H_
#include <memory>
#include <string>
#include <vector>
#include "media_perception/media_perception_mojom.pb.h"
#include "media_perception/perception_interface.pb.h"
#include "media_perception/rtanalytics.h"
#include "mojom/media_perception.mojom.h"
namespace mri {
// Manages and handles many types of graph outputs. Class represents an
// abstraction so that the MediaPerceptionImpl does not need to care what the
// output types for a particular pipeline are.
class OutputManager {
public:
OutputManager() {}
OutputManager(
const std::string& configuration_name,
std::shared_ptr<Rtanalytics> rtanalytics,
const PerceptionInterfaces& interfaces,
chromeos::media_perception::mojom::PerceptionInterfacesPtr*
interfaces_ptr);
void HandleFramePerception(const std::vector<uint8_t>& bytes);
void HandleHotwordDetection(const std::vector<uint8_t>& bytes);
void HandlePresencePerception(const std::vector<uint8_t>& bytes);
void HandleOccupancyTrigger(const std::vector<uint8_t>& bytes);
private:
chromeos::media_perception::mojom::FramePerceptionHandlerPtr
frame_perception_handler_ptr_;
chromeos::media_perception::mojom::HotwordDetectionHandlerPtr
hotword_detection_handler_ptr_;
chromeos::media_perception::mojom::PresencePerceptionHandlerPtr
presence_perception_handler_ptr_;
chromeos::media_perception::mojom::OccupancyTriggerHandlerPtr
occupancy_trigger_handler_ptr_;
};
} // namespace mri
#endif // MEDIA_PERCEPTION_OUTPUT_MANAGER_H_