Overlay功能需求简单分析和一些疑问

Overlay功能需求简单分析和一些疑问

Overlay 相关的功能主要有:
1. Video 播放通过overlay实现
2. Camera preview通过overlay 实现

需要做的工作有overlay hal层,以及video player正确使用overlay来播放,
Camera hal层中正确使用overlay 来实现preview。
Overlay hal层需要实现两部分接口,一个是overlay_control_device_t,一部分是overlay_data_device_t,前者是overlay的一些控制接口,后者是数据传输接口。

overlay_control_device_t结构的子函数:
overlay_t* (*createOverlay)(struct overlay_control_device_t *dev, uint32_t w, uint32_t h, int32_t format);
void (*destroyOverlay)(struct overlay_control_device_t *dev,overlay_t* overlay);
int (*setPosition)(struct overlay_control_device_t *dev, overlay_t* overlay,int x, int y, uint32_t w, uint32_t h);
int (*getPosition)(struct overlay_control_device_t *dev, overlay_t* overlay,int* x, int* y, uint32_t* w, uint32_t* h);
int (*setParameter)(struct overlay_control_device_t *dev,overlay_t* overlay, int param, int value);
上面的接口实现了建立设备,删除设备,设置位置,获取位置还有就是设置一些参数比如旋转等功能。

Overlay_data_device_t结构的子函数:
int (*dequeueBuffer)(struct overlay_data_device_t *dev,overlay_buffer_t *buf);
int (*queueBuffer)(struct overlay_data_device_t *dev,overlay_buffer_t buffer);
void* (*getBufferAddress)(struct overlay_data_device_t *dev, overlay_buffer_t buffer);
int (*getBufferCount)(struct overlay_data_device_t *dev);
上面的接口实现了等待队列内存返回,内存放回队列,获取内存指针,获取内存数目等功能。

关于Camera和Overaly的关系
在video player hal层中还有camera hal层中需要实现的就是调用上面的接口。
与overlay相关的系统框架:


有可能与海思那边打交道的就是在实现上面overlay hal层各个接口时,需要的时候会询问底层的
Vou driver实现以及android_driver目录下的vou.c封装层实现。
具体的还有这两个接口有些疑问:
Overlay_setPosition()
Overlay_setParameter()
第一个现在已经知道调用的是android_driver vou.c中的vou_setoutput(),之前是使用不当会导致后来播放出问题,只要在overlay 的中间层改动参数,就没有问题,可以去设置显示在任意区域。

第二个就是setparameter实现,包括rotate等,在android_driver vou.c中没有找到类似的实现,需要问问到底有没有这样的功能。
关于Overlay Hal的实现,需要考虑将来所有不同camera的通用性问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值