从handle得到GraphicBuffer

先定义一个宏:

cpp 复制代码
#ifndef container_of
#define container_of(ptr, type, member) \
    (type *)((char*)(ptr) - offsetof(type, member))
#endif

然后:

cpp 复制代码
ANativeWindowBuffer *anwBuffer = container_of(buffer, ANativeWindowBuffer, handle);

其中buffer的类型是:

cpp 复制代码
buffer_handle_t *buffer;

得到ANativeWindowBuffer以后:

cpp 复制代码
sp<GraphicBuffer> GraphicBuffer::from(ANativeWindowBuffer* anwb) {
    return static_cast<GraphicBuffer *>(anwb);
}
相关推荐
雨白12 分钟前
实现动态加载布局
android
帅得不敢出门1 小时前
Android设备推送traceroute命令进行网络诊断
android·网络
linweidong1 小时前
android手势创建及识别保姆级教程
android·屏幕适配·android面试·手势交互·安卓面经·android手势·多分辨率
byte轻骑兵2 小时前
【Bluedroid】蓝牙启动之 SMP_Init 源码解析
android·c++·smp·bluedroid
每次的天空3 小时前
Android第十四次面试总结
android·面试·职场和发展
androidwork3 小时前
Android 布局优化:掌握 <include> 与 <merge> 的实战技巧
android
Jiaberrr3 小时前
uniapp 安卓 APP 后台持续运行(保活)的尝试办法
android·前端·javascript·uni-app·app·保活
gfgfgg0013 小时前
谷歌地图手机版(Google maps)v11.152.0100安卓版 - 前端工具导航
android·智能手机
清霜之辰3 小时前
安卓Compose实现鱼骨加载中效果
android
Shujie_L3 小时前
【Android基础回顾】五:AMS(Activity Manager Service)
android