08_Android的Video 输入输出系统.doc

上传人:cn****1 文档编号:563703449 上传时间:2023-04-06 格式:DOC 页数:13 大小:55KB
返回 下载 相关 举报
08_Android的Video 输入输出系统.doc_第1页
第1页 / 共13页
08_Android的Video 输入输出系统.doc_第2页
第2页 / 共13页
08_Android的Video 输入输出系统.doc_第3页
第3页 / 共13页
08_Android的Video 输入输出系统.doc_第4页
第4页 / 共13页
08_Android的Video 输入输出系统.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《08_Android的Video 输入输出系统.doc》由会员分享,可在线阅读,更多相关《08_Android的Video 输入输出系统.doc(13页珍藏版)》请在金锄头文库上搜索。

1、08_Android的Video 输入输出系统pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 Android 的 Video 输入输出系统 Android 的 Video 输入输出系统 第一部分 述 第二部分 第三部分 第四部分 第五部分 Video 输入输出系统的综 Overlay 系统 Overlay 的硬件抽象层 Camera 系统与上层接口 Camera 的硬件抽象层 第一部分 Video 输入输出系统的综述 在 Android 系统中,视频的输入、输 出具有特定的架构。 视频输入输出的两个部分是: 视频输入: Camera 系统 既作为视频输入的

2、接口,也作为照相机 应用的下层实现。 视频输出: Overlay 系统 一般作为视频输出的单独层次,在硬件 支持中实现。 第一部分 Video 输入输出系统的综述 Android 的 Overlay 系统结构 Overlay API libui.so Overlay SurfaceFlinger Overlay Hardware Interface Overlay HAL 实现 C框架 内核空间 Video Output Driver 第一部分 Video 输入输出系统的综述 Overlay 相关的代码路径: Overlay 框架部分的头文件和源文件: frameworks/base/incl

3、ude/ui/ frameworks/base/libs/ui/ 主要为类是 IOverlay 和 Overlay ,源代码被编译成 库 libui.so 。 与 Overlay 相关的 SurfaceFlinger : framework/base/libs/surfaceflinger/ 主要的类是 LayerBuffer 。 Overlay 的硬件抽象层的接口 : hardware/libhardware/include/hardware/overlay.h 第一部分 Video 输入输出系统的综述 Android 的 Camera 系统结构 Java 框架 Java Camera Cl

4、ass (android.hardware.camera) Camera JNI Camera API IPC libui.so Camera Camera Service Camera Hardware Interface Camera HAL 实现 C框架 内核空间 Camera Driver 第一部分 Video 输入输出系统的综述 Camera 相关的代码路径: Camera 框架部分的头文件和源文件: frameworks/base/include/ui/ frameworks/base/libs/ui/ 这部分的内容被编译成库 libui.so 。 Camera 服务部分: fra

5、meworks/base/camera/libcameraservice/ 这部分内容被编译成库 libcameraservice.so 。 第一部分 Video 输入输出系统的综述 Camera 的 JAVA 本地调用部分( JNI ): frameworks/base/core/jni/android_hardware_Camera.cpp Camera 的 JAVA 类: frameworks/base/core/java/android/hardware/Camera.java Camera 的硬件抽象层的定义: frameworks/base/include/ui/ 目录之中的 Ca

6、meraHardwareInterface.h 第二部分 Overlay 系统 在 Android 中, Overlay 系统提供 overlay 接口,这个接口的含义是叠加在主的显 示层上的另外一个显示层,这个叠加的显示层通 常作为视频的输出或者照相机取景器的预览界面 来使用。 Overlay 通过 ISurface 接口来使用,这个 Overlay 的使用与 ISurface 中的 registerBuffers , postBuffer , unregisterBuffer s 几个接口是并立的,使用 Overlay 接口将和 SurfaceFlinger 中的显示等功能无关。 第二部分

7、 Overlay 系统 标题 标题 第二部分 Overlay 系统 ISurface 接口的定义: class ISurface : public IInterface public: DECLARE_META_INTERFACE(Surface); /* */ virtual status_t registerBuffers(const BufferHeap& buffers) = 0; virtual void postBuffer(ssize_t offset) = 0; / one-way virtual void unregisterBuffers() = 0; virtual sp

8、 createOverlay( uint32_t w, uint32_t h, int32_t format) = 0; ; Overlay 接口虽然通过 SurfaceFlinger 的 LayerBuffer 来实现,但是 Overlay 是一个独立接口和 SurfaceFlinger 的其他部分没有依赖关系。 第二部分 Overlay 系统 在文件 Overlay.h 中 , 定义了两个类 OverlayRef 和 Overlay 。 class Overlay : public virtual RefBase public: Overlay(const sp& overlayRef);

9、 void destroy(); status_t dequeueBuffer(overlay_buffer_t* buffer); status_t queueBuffer(overlay_buffer_t buffer); void* getBufferAddress(overlay_buffer_t buffer); /* */ ; 类 Overlay 中的几个接口用于视频数据的输出, 可以用队列,也可以直接使用地址。 第二部分 Overlay 系统 不使用 Overlay 和使用 Overlay 的对比: Video Output Data Video Output Data Get

10、Overlay Preview Data Preview Data ISurface SurfaceFlinger / 2 D Graphics ISurface Overlay Overlay HAL SurfaceFlinger / 2D Graphics Framebuffer Driver Video Out Device V4l2 output Fb driver Framebuffer Driver 第二部分 Overlay 系统 Overlay 与其他系统不同,它没有主动被 Android 系统所使用,因此如果移植了 Overlay 系统的硬件抽象层。还需要增加使用 Overla

11、y 的 部分。 Overlay 的使用场景主要有两个: 视频播放器的输出( PVPlayer ) Preview 的输出( CameraHal ) 第三部分 Overlay 的硬件抽象层 Overlay 的硬件抽象层的接口在以下头文件中定义: hardware/libhardware/include/hardware/overlay.h 在这个头文件中,主要定义了两个类: overlay_control_device_t 和 overlay_data_device_t , 它们分别继承了 hw_device_t common ,通过这两个类 实现 Overlay 的硬件抽象层。 实现一个 Ov

12、erlay 的硬件抽象层使用的是 Android 硬件模块的标准方法,通过类 overlay_module_t 来完成。 第三部分 Overlay 的硬件抽象层 hw_module_t common .method overlay_module_t OVERLAY_HARDWARE_CONTROL OVERLAY_HARDWARE_DATA open hw_device_t get createOverlay destroyOverlay setPosition getPosition setParameter overlay _control_device_t w h format w_st

13、ride h_stride reserved 3 getHandleRef reserved _procs7 overlay_t hw_device_t initialize dequeueBuffer queueBuffer getBufferAddress overlay_data_device_t int int int int numFds ; fds 4; numInts ; data 0; overlay_handle_t 第三部分 Overlay 的硬件抽象层 Overlay 硬件抽象层的一个实现示例在以下中实现: hardware/libhardware/modules/ove

14、rlay/overlay.cpp static struct hw_module_methods_t overlay_module_methods = open: overlay_device_open ; const struct overlay_module_t HAL_MODULE_INFO_SYM = common: tag: HARDWARE_MODULE_TAG, version_major: 1, version_minor: 0, id: OVERLAY_HARDWARE_MODULE_ID, name: Sample Overlay module, author: The A

15、ndroid Open Source Project, methods: &overlay_module_methods, ; 第三部分 Overlay 的硬件抽象层 Overlay 的使用过程: overlay_control_open overlay_module_t(hw_module_t common) : open overlay_control_device_t (hw_device_t common) overlay_module_t(hw_module_t common) : open overlay_data_device_t (hw_device_t common) overlay_control_device_t : createOverlay overlay_t : getHandleRef overlay_handle_t

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号