blob: 9ba43ff1fb0685a11171a720bdf7cfc022ac5718 [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_MEDIA_DRIVERS_AMLOGIC_DECODER_VIDEO_FIRMWARE_SESSION_H_
#define SRC_MEDIA_DRIVERS_AMLOGIC_DECODER_VIDEO_FIRMWARE_SESSION_H_
#include <fuchsia/tee/cpp/fidl.h>
#include <lib/fit/result.h>
#include <optional>
#include <tee-client-api/tee-client-types.h>
class VideoFirmwareSession {
public:
static fit::result<VideoFirmwareSession, fuchsia::tee::ApplicationSyncPtr> TryOpen(
fuchsia::tee::ApplicationSyncPtr tee_connection);
VideoFirmwareSession(VideoFirmwareSession&&) = default;
VideoFirmwareSession& operator=(VideoFirmwareSession&&) = default;
~VideoFirmwareSession();
// For now, any TEEC_Result != TEEC_SUCCESS returns ZX_ERR_INTERNAL.
[[nodiscard]] zx_status_t LoadVideoFirmware(const uint8_t* data, uint32_t size);
// For now, any TEEC_Result != TEEC_SUCCESS returns ZX_ERR_INTERNAL.
[[nodiscard]] zx_status_t LoadVideoFirmwareEncoder(uint8_t* data, uint32_t size);
private:
explicit VideoFirmwareSession(uint32_t session_id,
fuchsia::tee::ApplicationSyncPtr tee_connection)
: session_id_(session_id), tee_connection_(std::move(tee_connection)) {}
uint32_t session_id_;
fuchsia::tee::ApplicationSyncPtr tee_connection_;
};
#endif // SRC_MEDIA_DRIVERS_AMLOGIC_DECODER_VIDEO_FIRMWARE_SESSION_H_