C++程序  |  30行  |  932 B

#include "include/dvr/dvr_pose.h"

#include <memory>

#include <private/dvr/buffer_hub_queue_client.h>
#include <private/dvr/pose_client_internal.h>

#include "dvr_buffer_queue_internal.h"

using android::dvr::ConsumerQueue;

int dvrPoseClientGetDataReader(DvrPoseClient* client, uint64_t data_type,
                               DvrReadBufferQueue** queue_out) {
  if (!client || !queue_out)
    return -EINVAL;

  ConsumerQueue* consumer_queue;
  int status = android::dvr::dvrPoseClientGetDataReaderHandle(client,
                                                              data_type,
                                                              &consumer_queue);
  if (status != 0) {
    ALOGE("dvrPoseClientGetDataReader: Failed to get queue: %d", status);
    return status;
  }

  std::shared_ptr<ConsumerQueue> consumer_queue_ptr{consumer_queue};
  *queue_out = new DvrReadBufferQueue(consumer_queue_ptr);
  return 0;
}