blob: 8d2a498bafd3f29a69abb4c470c4d97711f2fa63 [file] [log] [blame]
// Copyright 2019 The Fuchsia 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 SRC_CAMERA_EXAMPLES_DEMO_STREAMPTR_WRAPPER_H_
#define SRC_CAMERA_EXAMPLES_DEMO_STREAMPTR_WRAPPER_H_
#include <fuchsia/camera2/cpp/fidl.h>
// This is a simple wrapper that forwards all Stream methods to an owned StreamPtr instance. It can
// be used to serve the Stream interface as a std::unique_ptr.
class StreamPtrWrapper : public fuchsia::camera2::Stream {
public:
StreamPtrWrapper(fuchsia::camera2::StreamPtr stream) : stream_(std::move(stream)) {}
fuchsia::camera2::StreamPtr& operator->() { return stream_; }
virtual void Start() override { stream_->Start(); }
virtual void Stop() override { stream_->Stop(); }
virtual void ReleaseFrame(uint32_t buffer_id) override { stream_->ReleaseFrame(buffer_id); }
virtual void AcknowledgeFrameError() override { stream_->AcknowledgeFrameError(); }
virtual void SetRegionOfInterest(float x_min, float y_min, float x_max, float y_max,
SetRegionOfInterestCallback callback) override {
stream_->SetRegionOfInterest(x_min, y_min, x_max, y_max, std::move(callback));
}
virtual void SetImageFormat(uint32_t image_format_index,
SetImageFormatCallback callback) override {
stream_->SetImageFormat(image_format_index, std::move(callback));
}
virtual void GetImageFormats(GetImageFormatsCallback callback) override {
stream_->GetImageFormats(std::move(callback));
}
private:
fuchsia::camera2::StreamPtr stream_;
};
#endif // SRC_CAMERA_EXAMPLES_DEMO_STREAMPTR_WRAPPER_H_