Adopt the use of shared buffers.
Bug: 37001948
Test: Make system image
Change-Id: I032574f250e0f0fe7768af649730406e24d853db
diff --git a/libs/vr/libvrsensor/Android.bp b/libs/vr/libvrsensor/Android.bp
index abad78b..d022adf 100644
--- a/libs/vr/libvrsensor/Android.bp
+++ b/libs/vr/libvrsensor/Android.bp
@@ -23,9 +23,11 @@
]
staticLibraries = [
+ "libdisplay",
"libbufferhub",
"libbufferhubqueue",
"libdvrcommon",
+ "libbroadcastring",
"libpdx_default_transport",
]
@@ -43,6 +45,7 @@
export_include_dirs: includeFiles,
static_libs: staticLibraries,
shared_libs: sharedLibraries,
+ header_libs: ["libdvr_headers"],
name: "libvrsensor",
}
diff --git a/libs/vr/libvrsensor/include/dvr/pose_client.h b/libs/vr/libvrsensor/include/dvr/pose_client.h
index 6802fa9..43a8e74 100644
--- a/libs/vr/libvrsensor/include/dvr/pose_client.h
+++ b/libs/vr/libvrsensor/include/dvr/pose_client.h
@@ -14,63 +14,13 @@
#include <stdbool.h>
#include <stdint.h>
+#include <dvr/dvr_pose.h>
+
#ifdef __cplusplus
extern "C" {
#endif
-typedef struct DvrPose DvrPose;
-
-// Represents the current state provided by the pose service, containing a
-// rotation and translation.
-typedef struct __attribute__((packed, aligned(8))) DvrPoseState {
- // A quaternion representing the rotation of the HMD in Start Space.
- struct __attribute__((packed)) {
- float x, y, z, w;
- } head_from_start_rotation;
- // The position of the HMD in Start Space.
- struct __attribute__((packed)) {
- float x, y, z;
- } head_from_start_translation;
- // Time in nanoseconds for the current pose.
- uint64_t timestamp_ns;
- // The rotational velocity of the HMD.
- struct __attribute__((packed)) {
- float x, y, z;
- } sensor_from_start_rotation_velocity;
-} DvrPoseState;
-
-enum {
- DVR_POSE_FLAG_VALID = (1UL << 0), // This pose is valid.
- DVR_POSE_FLAG_HEAD = (1UL << 1), // This pose is the head.
- DVR_POSE_FLAG_CONTROLLER = (1UL << 2), // This pose is a controller.
-};
-
-// Represents an estimated pose, accessed asynchronously through a shared ring
-// buffer. No assumptions should be made about the data in padding space.
-// The size of this struct is 128 bytes.
-typedef struct __attribute__((packed, aligned(16))) DvrPoseAsync {
- // Left eye head-from-start orientation quaternion x,y,z,w.
- float32x4_t orientation;
- // Left eye head-from-start translation x,y,z,pad in meters.
- float32x4_t translation;
- // Right eye head-from-start orientation quaternion x,y,z,w.
- float32x4_t right_orientation;
- // Right eye head-from-start translation x,y,z,pad in meters.
- float32x4_t right_translation;
- // Start-space angular velocity x,y,z,pad in radians per second.
- float32x4_t angular_velocity;
- // Start-space positional velocity x,y,z,pad in meters per second.
- float32x4_t velocity;
- // Timestamp of when this pose is predicted for, typically halfway through
- // scanout.
- int64_t timestamp_ns;
- // Bitmask of DVR_POSE_FLAG_* constants that apply to this pose.
- //
- // If DVR_POSE_FLAG_VALID is not set, the pose is indeterminate.
- uint64_t flags;
- // Reserved padding to 128 bytes.
- uint8_t pad[16];
-} DvrPoseAsync;
+typedef struct DvrPoseClient DvrPoseClient;
// Returned by the async pose ring buffer access API.
typedef struct DvrPoseRingBufferInfo {
@@ -120,12 +70,12 @@
// Creates a new pose client.
//
// @return Pointer to the created pose client, nullptr on failure.
-DvrPose* dvrPoseCreate();
+DvrPoseClient* dvrPoseClientCreate();
// Destroys a pose client.
//
// @param client Pointer to the pose client to be destroyed.
-void dvrPoseDestroy(DvrPose* client);
+void dvrPoseClientDestroy(DvrPoseClient* client);
// Gets the pose for the given vsync count.
//
@@ -134,10 +84,11 @@
// Typically this is the count returned by dvrGetNextVsyncCount.
// @param out_pose Struct to store pose state.
// @return Zero on success, negative error code on failure.
-int dvrPoseGet(DvrPose* client, uint32_t vsync_count, DvrPoseAsync* out_pose);
+int dvrPoseClientGet(DvrPoseClient* client, uint32_t vsync_count,
+ DvrPoseAsync* out_pose);
// Gets the current vsync count.
-uint32_t dvrPoseGetVsyncCount(DvrPose* client);
+uint32_t dvrPoseClientGetVsyncCount(DvrPoseClient* client);
// Gets the pose for the given controller at the given vsync count.
//
@@ -147,15 +98,15 @@
// Typically this is the count returned by dvrGetNextVsyncCount.
// @param out_pose Struct to store pose state.
// @return Zero on success, negative error code on failure.
-int dvrPoseGetController(DvrPose* client, int32_t controller_id,
- uint32_t vsync_count, DvrPoseAsync* out_pose);
+int dvrPoseClientGetController(DvrPoseClient* client, int32_t controller_id,
+ uint32_t vsync_count, DvrPoseAsync* out_pose);
// Enables/disables logging for the controller fusion.
//
// @param client Pointer to the pose client.
// @param enable True starts logging, False stops.
// @return Zero on success, negative error code on failure.
-int dvrPoseLogController(DvrPose* client, bool enable);
+int dvrPoseClientLogController(DvrPoseClient* client, bool enable);
// DEPRECATED
// Polls current pose state.
@@ -163,7 +114,7 @@
// @param client Pointer to the pose client.
// @param state Struct to store polled state.
// @return Zero on success, negative error code on failure.
-int dvrPosePoll(DvrPose* client, DvrPoseState* state);
+int dvrPoseClientPoll(DvrPoseClient* client, DvrPose* state);
// Freezes the pose to the provided state.
//
@@ -174,19 +125,19 @@
// @param client Pointer to the pose client.
// @param frozen_state State pose to be frozen to.
// @return Zero on success, negative error code on failure.
-int dvrPoseFreeze(DvrPose* client, const DvrPoseState* frozen_state);
+int dvrPoseClientFreeze(DvrPoseClient* client, const DvrPose* frozen_state);
// Sets the pose service mode.
//
// @param mode The requested pose mode.
// @return Zero on success, negative error code on failure.
-int dvrPoseSetMode(DvrPose* client, DvrPoseMode mode);
+int dvrPoseClientSetMode(DvrPoseClient* client, DvrPoseMode mode);
// Gets the pose service mode.
//
// @param mode Return value for the current pose mode.
// @return Zero on success, negative error code on failure.
-int dvrPoseGetMode(DvrPose* client, DvrPoseMode* mode);
+int dvrPoseClientGetMode(DvrPoseClient* client, DvrPoseMode* mode);
// Get access to the shared memory pose ring buffer.
// A future pose at vsync <current> + <offset> is accessed at index:
@@ -197,8 +148,8 @@
// |out_fd| will be set to the gralloc buffer file descriptor, which is
// required for binding this buffer for GPU use.
// Returns 0 on success.
-int dvrPoseGetRingBuffer(DvrPose* client, DvrPoseRingBufferInfo* out_info);
-
+int dvrPoseClientGetRingBuffer(DvrPoseClient* client,
+ DvrPoseRingBufferInfo* out_info);
#ifdef __cplusplus
} // extern "C"
diff --git a/libs/vr/libvrsensor/include/private/dvr/pose-ipc.h b/libs/vr/libvrsensor/include/private/dvr/pose-ipc.h
index 0616d46..9603f1b 100644
--- a/libs/vr/libvrsensor/include/private/dvr/pose-ipc.h
+++ b/libs/vr/libvrsensor/include/private/dvr/pose-ipc.h
@@ -11,11 +11,8 @@
#define DVR_POSE_SERVICE_CLIENT (DVR_POSE_SERVICE_BASE "/client")
enum {
- DVR_POSE_POLL = 0,
- DVR_POSE_FREEZE,
+ DVR_POSE_FREEZE = 0,
DVR_POSE_SET_MODE,
- DVR_POSE_GET_RING_BUFFER,
- DVR_POSE_NOTIFY_VSYNC,
DVR_POSE_GET_MODE,
DVR_POSE_GET_CONTROLLER_RING_BUFFER,
DVR_POSE_LOG_CONTROLLER,
diff --git a/libs/vr/libvrsensor/include/private/dvr/pose_client_internal.h b/libs/vr/libvrsensor/include/private/dvr/pose_client_internal.h
deleted file mode 100644
index 66c4c7c..0000000
--- a/libs/vr/libvrsensor/include/private/dvr/pose_client_internal.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef ANDROID_DVR_POSE_CLIENT_INTERNAL_H_
-#define ANDROID_DVR_POSE_CLIENT_INTERNAL_H_
-
-#include <stdint.h>
-
-#include <dvr/pose_client.h>
-#include <pdx/file_handle.h>
-#include <private/dvr/sensor_constants.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// Sensord head pose ring buffer.
-typedef struct __attribute__((packed, aligned(16))) DvrPoseRingBuffer {
- // Ring buffer always at the beginning of the structure, as consumers may
- // not have access to this parent structure definition.
- DvrPoseAsync ring[kPoseAsyncBufferTotalCount];
- // Current vsync_count (where sensord is writing poses from).
- uint32_t vsync_count;
-} DvrPoseMetadata;
-
-// Called by displayd to give vsync count info to the pose service.
-// |display_timestamp| Display timestamp is in the middle of scanout.
-// |display_period_ns| Nanos between vsyncs.
-// |right_eye_photon_offset_ns| Nanos to shift the prediction timestamp for
-// the right eye head pose (relative to the left eye prediction).
-int privateDvrPoseNotifyVsync(DvrPose* client, uint32_t vsync_count,
- int64_t display_timestamp,
- int64_t display_period_ns,
- int64_t right_eye_photon_offset_ns);
-
-// Get file descriptor for access to the shared memory pose buffer. This can be
-// used with GL extensions that support shared memory buffer objects. The caller
-// takes ownership of the returned fd and must close it or pass on ownership.
-int privateDvrPoseGetRingBufferFd(DvrPose* client,
- android::pdx::LocalHandle* fd);
-
-#ifdef __cplusplus
-} // extern "C"
-#endif
-
-#endif // ANDROID_DVR_POSE_CLIENT_INTERNAL_H_
diff --git a/libs/vr/libvrsensor/include/private/dvr/sensor_constants.h b/libs/vr/libvrsensor/include/private/dvr/sensor_constants.h
deleted file mode 100644
index 8fa87b3..0000000
--- a/libs/vr/libvrsensor/include/private/dvr/sensor_constants.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef ANDROID_DVR_SENSOR_CONSTANTS_H_
-#define ANDROID_DVR_SENSOR_CONSTANTS_H_
-
-namespace android {
-namespace dvr {
-
-// Number of elements in the async pose buffer.
-// Must be power of two.
-// Macro so that shader code can easily include this value.
-#define kPoseAsyncBufferTotalCount 8
-
-// Mask for accessing the current ring buffer array element:
-// index = vsync_count & kPoseAsyncBufferIndexMask
-constexpr uint32_t kPoseAsyncBufferIndexMask = kPoseAsyncBufferTotalCount - 1;
-
-// Number of pose frames including the current frame that are kept updated with
-// pose forecast data. The other poses are left their last known estimates.
-constexpr uint32_t kPoseAsyncBufferMinFutureCount = 4;
-
-} // namespace dvr
-} // namespace android
-
-#endif // ANDROID_DVR_SENSOR_CONSTANTS_H_
diff --git a/libs/vr/libvrsensor/pose_client.cpp b/libs/vr/libvrsensor/pose_client.cpp
index 9eae3aa..2166597 100644
--- a/libs/vr/libvrsensor/pose_client.cpp
+++ b/libs/vr/libvrsensor/pose_client.cpp
@@ -1,4 +1,5 @@
#define LOG_TAG "PoseClient"
+#include <dvr/dvr_shared_buffers.h>
#include <dvr/pose_client.h>
#include <stdint.h>
@@ -8,9 +9,9 @@
#include <pdx/default_transport/client_channel_factory.h>
#include <pdx/file_handle.h>
#include <private/dvr/buffer_hub_client.h>
+#include <private/dvr/display_client.h>
#include <private/dvr/pose-ipc.h>
-#include <private/dvr/pose_client_internal.h>
-#include <private/dvr/sensor_constants.h>
+#include <private/dvr/shared_buffer_helpers.h>
using android::pdx::LocalHandle;
using android::pdx::LocalChannelHandle;
@@ -28,39 +29,44 @@
~PoseClient() override {}
// Casts C handle into an instance of this class.
- static PoseClient* FromC(DvrPose* client) {
+ static PoseClient* FromC(DvrPoseClient* client) {
return reinterpret_cast<PoseClient*>(client);
}
// Polls the pose service for the current state and stores it in *state.
// Returns zero on success, a negative error code otherwise.
- int Poll(DvrPoseState* state) {
- Transaction trans{*this};
- Status<int> status =
- trans.Send<int>(DVR_POSE_POLL, nullptr, 0, state, sizeof(*state));
- ALOGE_IF(!status, "Pose poll() failed because: %s\n",
- status.GetErrorMessage().c_str());
- return ReturnStatusOrError(status);
+ int Poll(DvrPose* state) {
+ const auto vsync_buffer = GetVsyncBuffer();
+ if (vsync_buffer) {
+ if (state) {
+ // Fill the state
+ *state = vsync_buffer->current_pose;
+ }
+ return -EINVAL;
+ }
+
+ return -EAGAIN;
}
int GetPose(uint32_t vsync_count, DvrPoseAsync* out_pose) {
- if (!mapped_pose_buffer_) {
- int ret = GetRingBuffer(nullptr);
- if (ret < 0)
- return ret;
+ const auto vsync_buffer = GetVsyncBuffer();
+ if (vsync_buffer) {
+ *out_pose =
+ vsync_buffer
+ ->vsync_poses[vsync_count & DvrVsyncPoseBuffer::kIndexMask];
+ return 0;
+ } else {
+ return -EAGAIN;
}
- *out_pose =
- mapped_pose_buffer_->ring[vsync_count & kPoseAsyncBufferIndexMask];
- return 0;
}
uint32_t GetVsyncCount() {
- if (!mapped_pose_buffer_) {
- int ret = GetRingBuffer(nullptr);
- if (ret < 0)
- return 0;
+ const auto vsync_buffer = GetVsyncBuffer();
+ if (vsync_buffer) {
+ return vsync_buffer->vsync_count;
}
- return mapped_pose_buffer_->vsync_count;
+
+ return 0;
}
int GetControllerPose(int32_t controller_id, uint32_t vsync_count,
@@ -75,7 +81,7 @@
}
*out_pose =
controllers_[controller_id]
- .mapped_pose_buffer[vsync_count & kPoseAsyncBufferIndexMask];
+ .mapped_pose_buffer[vsync_count & DvrVsyncPoseBuffer::kIndexMask];
return 0;
}
@@ -92,7 +98,7 @@
// this state until a different state is frozen or SetMode() is called with a
// different mode.
// Returns zero on success, a negative error code otherwise.
- int Freeze(const DvrPoseState& frozen_state) {
+ int Freeze(const DvrPose& frozen_state) {
Transaction trans{*this};
Status<int> status = trans.Send<int>(DVR_POSE_FREEZE, &frozen_state,
sizeof(frozen_state), nullptr, 0);
@@ -125,47 +131,18 @@
}
int GetRingBuffer(DvrPoseRingBufferInfo* out_info) {
- if (pose_buffer_.get()) {
+ // First time mapping the buffer?
+ const auto vsync_buffer = GetVsyncBuffer();
+ if (vsync_buffer) {
if (out_info) {
- GetPoseRingBufferInfo(out_info);
+ out_info->min_future_count = DvrVsyncPoseBuffer::kMinFutureCount;
+ out_info->total_count = DvrVsyncPoseBuffer::kSize;
+ out_info->buffer = vsync_buffer->vsync_poses;
}
- return 0;
+ return -EINVAL;
}
- Transaction trans{*this};
- Status<LocalChannelHandle> status =
- trans.Send<LocalChannelHandle>(DVR_POSE_GET_RING_BUFFER);
- if (!status) {
- ALOGE("Pose GetRingBuffer() failed because: %s",
- status.GetErrorMessage().c_str());
- return -status.error();
- }
-
- auto buffer = BufferConsumer::Import(status.take());
- if (!buffer) {
- ALOGE("Pose failed to import ring buffer");
- return -EIO;
- }
- void* addr = nullptr;
- int ret = buffer->GetBlobReadOnlyPointer(sizeof(DvrPoseRingBuffer), &addr);
- if (ret < 0 || !addr) {
- ALOGE("Pose failed to map ring buffer: ret:%d, addr:%p", ret, addr);
- return -EIO;
- }
- pose_buffer_.swap(buffer);
- mapped_pose_buffer_ = static_cast<const DvrPoseRingBuffer*>(addr);
- ALOGI("Mapped pose data translation %f,%f,%f quat %f,%f,%f,%f",
- mapped_pose_buffer_->ring[0].translation[0],
- mapped_pose_buffer_->ring[0].translation[1],
- mapped_pose_buffer_->ring[0].translation[2],
- mapped_pose_buffer_->ring[0].orientation[0],
- mapped_pose_buffer_->ring[0].orientation[1],
- mapped_pose_buffer_->ring[0].orientation[2],
- mapped_pose_buffer_->ring[0].orientation[3]);
- if (out_info) {
- GetPoseRingBufferInfo(out_info);
- }
- return 0;
+ return -EAGAIN;
}
int GetControllerRingBuffer(int32_t controller_id) {
@@ -190,7 +167,7 @@
ALOGE("Pose failed to import ring buffer");
return -EIO;
}
- constexpr size_t size = kPoseAsyncBufferTotalCount * sizeof(DvrPoseAsync);
+ constexpr size_t size = DvrVsyncPoseBuffer::kSize * sizeof(DvrPoseAsync);
void* addr = nullptr;
int ret = buffer->GetBlobReadOnlyPointer(size, &addr);
if (ret < 0 || !addr) {
@@ -201,9 +178,9 @@
client_state.mapped_pose_buffer = static_cast<const DvrPoseAsync*>(addr);
ALOGI(
"Mapped controller %d pose data translation %f,%f,%f quat %f,%f,%f,%f",
- controller_id, client_state.mapped_pose_buffer[0].translation[0],
- client_state.mapped_pose_buffer[0].translation[1],
- client_state.mapped_pose_buffer[0].translation[2],
+ controller_id, client_state.mapped_pose_buffer[0].position[0],
+ client_state.mapped_pose_buffer[0].position[1],
+ client_state.mapped_pose_buffer[0].position[2],
client_state.mapped_pose_buffer[0].orientation[0],
client_state.mapped_pose_buffer[0].orientation[1],
client_state.mapped_pose_buffer[0].orientation[2],
@@ -211,32 +188,6 @@
return 0;
}
- int NotifyVsync(uint32_t vsync_count, int64_t display_timestamp,
- int64_t display_period_ns,
- int64_t right_eye_photon_offset_ns) {
- const struct iovec data[] = {
- {.iov_base = &vsync_count, .iov_len = sizeof(vsync_count)},
- {.iov_base = &display_timestamp, .iov_len = sizeof(display_timestamp)},
- {.iov_base = &display_period_ns, .iov_len = sizeof(display_period_ns)},
- {.iov_base = &right_eye_photon_offset_ns,
- .iov_len = sizeof(right_eye_photon_offset_ns)},
- };
- Transaction trans{*this};
- Status<int> status =
- trans.SendVector<int>(DVR_POSE_NOTIFY_VSYNC, data, nullptr);
- ALOGE_IF(!status, "Pose NotifyVsync() failed because: %s\n",
- status.GetErrorMessage().c_str());
- return ReturnStatusOrError(status);
- }
-
- int GetRingBufferFd(LocalHandle* fd) {
- int ret = GetRingBuffer(nullptr);
- if (ret < 0)
- return ret;
- *fd = pose_buffer_->GetBlobFd();
- return 0;
- }
-
private:
friend BASE;
@@ -252,14 +203,29 @@
PoseClient(const PoseClient&) = delete;
PoseClient& operator=(const PoseClient&) = delete;
- void GetPoseRingBufferInfo(DvrPoseRingBufferInfo* out_info) const {
- out_info->min_future_count = kPoseAsyncBufferMinFutureCount;
- out_info->total_count = kPoseAsyncBufferTotalCount;
- out_info->buffer = mapped_pose_buffer_->ring;
+ const DvrVsyncPoseBuffer* GetVsyncBuffer() {
+ if (mapped_vsync_pose_buffer_ == nullptr) {
+ if (vsync_pose_buffer_ == nullptr) {
+ // The constructor tries mapping it so we do not need TryMapping after.
+ vsync_pose_buffer_ = std::make_unique<CPUMappedBuffer>(
+ DvrGlobalBuffers::kVsyncPoseBuffer, CPUUsageMode::READ_OFTEN);
+ } else if (vsync_pose_buffer_->IsMapped() == false) {
+ vsync_pose_buffer_->TryMapping();
+ }
+
+ if (vsync_pose_buffer_->IsMapped()) {
+ mapped_vsync_pose_buffer_ =
+ static_cast<DvrVsyncPoseBuffer*>(vsync_pose_buffer_->Address());
+ }
+ }
+
+ return mapped_vsync_pose_buffer_;
}
- std::unique_ptr<BufferConsumer> pose_buffer_;
- const DvrPoseRingBuffer* mapped_pose_buffer_ = nullptr;
+ // The vsync pose buffer if already mapped.
+ std::unique_ptr<CPUMappedBuffer> vsync_pose_buffer_;
+
+ const DvrVsyncPoseBuffer* mapped_vsync_pose_buffer_ = nullptr;
struct ControllerClientState {
std::unique_ptr<BufferConsumer> pose_buffer;
@@ -273,66 +239,55 @@
using android::dvr::PoseClient;
-struct DvrPose {};
-
extern "C" {
-DvrPose* dvrPoseCreate() {
- PoseClient* client = PoseClient::Create().release();
- return reinterpret_cast<DvrPose*>(client);
+DvrPoseClient* dvrPoseClientCreate() {
+ auto* client = PoseClient::Create().release();
+ return reinterpret_cast<DvrPoseClient*>(client);
}
-void dvrPoseDestroy(DvrPose* client) { delete PoseClient::FromC(client); }
+void dvrPoseClientDestroy(DvrPoseClient* client) {
+ delete PoseClient::FromC(client);
+}
-int dvrPoseGet(DvrPose* client, uint32_t vsync_count, DvrPoseAsync* out_pose) {
+int dvrPoseClientGet(DvrPoseClient* client, uint32_t vsync_count,
+ DvrPoseAsync* out_pose) {
return PoseClient::FromC(client)->GetPose(vsync_count, out_pose);
}
-uint32_t dvrPoseGetVsyncCount(DvrPose* client) {
+uint32_t dvrPoseClientGetVsyncCount(DvrPoseClient* client) {
return PoseClient::FromC(client)->GetVsyncCount();
}
-int dvrPoseGetController(DvrPose* client, int32_t controller_id,
- uint32_t vsync_count, DvrPoseAsync* out_pose) {
+int dvrPoseClientGetController(DvrPoseClient* client, int32_t controller_id,
+ uint32_t vsync_count, DvrPoseAsync* out_pose) {
return PoseClient::FromC(client)->GetControllerPose(controller_id,
vsync_count, out_pose);
}
-int dvrPoseLogController(DvrPose* client, bool enable) {
+int dvrPoseClientLogController(DvrPoseClient* client, bool enable) {
return PoseClient::FromC(client)->LogController(enable);
}
-int dvrPosePoll(DvrPose* client, DvrPoseState* state) {
+int dvrPoseClientPoll(DvrPoseClient* client, DvrPose* state) {
return PoseClient::FromC(client)->Poll(state);
}
-int dvrPoseFreeze(DvrPose* client, const DvrPoseState* frozen_state) {
+int dvrPoseClientFreeze(DvrPoseClient* client, const DvrPose* frozen_state) {
return PoseClient::FromC(client)->Freeze(*frozen_state);
}
-int dvrPoseSetMode(DvrPose* client, DvrPoseMode mode) {
+int dvrPoseClientSetMode(DvrPoseClient* client, DvrPoseMode mode) {
return PoseClient::FromC(client)->SetMode(mode);
}
-int dvrPoseGetMode(DvrPose* client, DvrPoseMode* mode) {
+int dvrPoseClientGetMode(DvrPoseClient* client, DvrPoseMode* mode) {
return PoseClient::FromC(client)->GetMode(mode);
}
-int dvrPoseGetRingBuffer(DvrPose* client, DvrPoseRingBufferInfo* out_info) {
+int dvrPoseClientGetRingBuffer(DvrPoseClient* client,
+ DvrPoseRingBufferInfo* out_info) {
return PoseClient::FromC(client)->GetRingBuffer(out_info);
}
-int privateDvrPoseNotifyVsync(DvrPose* client, uint32_t vsync_count,
- int64_t display_timestamp,
- int64_t display_period_ns,
- int64_t right_eye_photon_offset_ns) {
- return PoseClient::FromC(client)->NotifyVsync(vsync_count, display_timestamp,
- display_period_ns,
- right_eye_photon_offset_ns);
-}
-
-int privateDvrPoseGetRingBufferFd(DvrPose* client, LocalHandle* fd) {
- return PoseClient::FromC(client)->GetRingBufferFd(fd);
-}
-
} // extern "C"