mGetMemory()

在 void CameraHardware::initPreviewBuffer(int size) 中, ICS 用了 mGetMemory()来申请previewbuffer.

   1.         mPreviewBuffer.mem = mGetMemory(-1, size_aligned, kBufferCount, NULL);
   2.         LogDetail("mPreviewBuffer mem: %p (%dB)", mPreviewBuffer.mem->data, mPreviewBuffer.mem->size);
   3.         mPreviewBuffer.baseSize = size_aligned;
   4.         mRawMem = mGetMemory(-1, postview_size, 1, NULL);
   5.         LogDetail("mRawMem mem: %p (%dB)", mRawMem->data, mRawMem->size);
   6.         mRawIdMem = mGetMemory(-1, sizeof(int), 1, NULL);
   7.         LogDetail("mRawIdMem mem: %p (%dB)", mRawIdMem->data, mRawIdMem->size);
   8.         mPreviewConvertMem = mGetMemory(-1, size_aligned * 4 /3, 1, NULL);
   9.         LogDetail("mPreviewConvertMem mem: %p (%dB)", mPreviewConvertMem->data, mPreviewConvertMem->size);
  10.

  11.         for (int i = 0; i < kBufferCount; i++) {
  12.             mPreviewBuffer.flags[i] = 0;
  13.            mPreviewBuffer.base[i] = (void*)((unsigned)mPreviewBuffer.mem->data + (i * size_aligned));
  14.            mPreviewBuffer.start[i] = (uint8_t *)mPreviewBuffer.mem->data +
  15.                                       (i * size_aligned);
  16.             LogDetail2("mPreviewBuffer.start[%d] = %p", i, mPreviewBuffer.start[i]);
  17.             clrBF(&mPreviewBuffer.flags[i], BF_ENABLED|BF_LOCKED);
  18.         }
  19.         LogDetail("PreviewBufferInfo: num(%d), size(%d), heapsize(%d)",
  20.              kBufferCount, size, mPreviewBuffer.mem->size);


mGetMemory() 在hardware/intel/libcamera/CameraHardware.h 定义:

   1. typedef camera_memory_t* (*camera_request_memory)(int fd, size_t buf_size, unsigned int num_bufs,
   2.                                                   void *user);

int fd  ---- 可以是 -1.
size_t buf_size --- buf大小
unsigned int num_bufs --- buffer数量
void *user  --- buffer赋值,如果是申请空的内存,可以为NULL, 如果是存入数据,如照片,可以是指针。
//这点很重要。

camera_memory_t* 是个数组, 但是被转成函数形式来获得。
   1. typedef struct camera_memory {
   2.     void *data;
   3.     size_t size;
   4.     void *handle;
   5.     camera_release_memory release;
   6. } camera_memory_t;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值