手机开发培训 08_Android的Video 输入输出系统.pdf
《手机开发培训 08_Android的Video 输入输出系统.pdf》由会员分享,可在线阅读,更多相关《手机开发培训 08_Android的Video 输入输出系统.pdf(41页珍藏版)》请在汇文网上搜索。
1、 Android的Video 输入输出系统 Android的Video 输入输出系统 第一部分 Video输入输出系统的综 述 第二部分 Overlay系统 第三部分 Overlay的硬件抽象层 第四部分 Camera系统与上层接口 第五部分 Camera的硬件抽象层 第一部分 Video输入输出系统的综述 在Android系统中,视频的输入、输 出具有特定的架构。 视频输入输出的两个部分是: 视频输入:Camera系统 既作为视频输入的接口,也作为照相机 应用的下层实现。 视频输出:Overlay系统 一般作为视频输出的单独层次,在硬件 支持中实现。 第一部分 Video输入输出系统的综述
2、Android的Overlay系统结构 Overlay HAL实现 Video Output Driver Overlay Hardware Interface 内核空间 C框架 Overlay API libui.so Overlay SurfaceFlinger 第一部分 Video输入输出系统的综述 Overlay相关的代码路径: Overlay框架部分的头文件和源文件: frameworks/base/include/ui/ frameworks/base/libs/ui/ 主要为类是IOverlay和Overlay,源代码被编译成 库libui.so。 与Overlay相关的Surf
3、aceFlinger: framework/base/libs/surfaceflinger/ 主要的类是LayerBuffer。 Overlay的硬件抽象层的接口: hardware/libhardware/include/hardware/overlay.h Android的Camera系统结构 Camera HAL实现 Camera Service Camera Driver Camera Hardware Interface 内核空间 C框架 Camera API Camera JNI Java Camera Class (android.hardware.camera) libui.
4、so Camera Java 框架 IPC 第一部分 Video输入输出系统的综述 第一部分 Video输入输出系统的综述 Camera相关的代码路径: Camera框架部分的头文件和源文件: frameworks/base/include/ui/ frameworks/base/libs/ui/ 这部分的内容被编译成库libui.so。 Camera服务部分: frameworks/base/camera/libcameraservice/ 这部分内容被编译成库libcameraservice.so。 第一部分 Video输入输出系统的综述 Camera的JAVA本地调用部分(JNI): f
5、rameworks/base/core/jni/android_hardware_Camera.cpp Camera的JAVA类: frameworks/base/core/java/android/hardware/Camera.java Camera的硬件抽象层的定义: frameworks/base/include/ui/ 目录之中的CameraHardwareInterface.h 第二部分 Overlay系统 在Android中,Overlay系统提供 overlay接口,这个接口的含义是叠加在主的显 示层上的另外一个显示层,这个叠加的显示层通 常作为视频的输出或者照相机取景器的预览
6、 用。 Overlay通 ISurface接口 用,这个 Overlay的 用与ISurface中的 registerBuffers,postBuffer,unregisterBuffer s 个接口是 的, 用Overlay接口 和 SurfaceFlinger中的显示 关。 第二部分 Overlay系统 第二部分 Overlay系统 ISurface接口的定义: class ISurface : public IInterface public: DECLARE_META_INTERFACE(Surface); /* . . */ virtual status_t registerBuff
7、ers(const BufferHeap virtual void postBuffer(ssize_t offset) = 0; / one-way virtual void unregisterBuffers() = 0; virtual sp createOverlay( uint32_t w, uint32_t h, int32_t format) = 0; ; Overlay接口 通 SurfaceFlinger的 LayerBuffer 实现, 是Overlay是一个独 接口和 SurfaceFlinger的 部分 有 关系。 第二部分 Overlay系统 在文件Overlay.h
8、中, 定义 两个类 OverlayRef和Overlay。 class Overlay : public virtual RefBase public: Overlay(const sp void destroy(); status_t dequeueBuffer(overlay_buffer_t* buffer); status_t queueBuffer(overlay_buffer_t buffer); void* getBufferAddress(overlay_buffer_t buffer); /* . .*/ ; 类Overlay中的 个接口用 视频 的输出, 用 ,也 接 用地
9、 。 第二部分 Overlay系统 用Overlay和 用Overlay的: ISurface Preview Data SurfaceFlinger / 2D Graphics Framebuffer Driver Video Output Data Overlay HAL Video Output Data ISurface SurfaceFlinger / 2D Graphics Framebuffer Driver Overlay V4l2 output Get Overlay Fb driver Video Out Device Preview Data 第二部分 Overlay系统
10、 Overlay与 系统, 有主被 Android系统 用,currency1“ Overlay 系统的硬件抽象层。fifl要 加 用Overlay的 部分。 Overlay的 用景主要有两个: 视频器的输出(PVPlayer) Preview的输出(CameraHal) 第三部分 Overlay的硬件抽象层 Overlay的硬件抽象层的接口在 下头文件中定义: hardware/libhardware/include/hardware/overlay.h 在这个头文件中,主要定义 两个类: overlay_control_device_t和overlay_data_device_t, 分 h
11、w_device_t common,通 这两个类 实现Overlay的硬件抽象层。 实现一个Overlay的硬件抽象层 用的是 Android硬件的 ”,通 类 overlay_module_t 成。 第三部分 Overlay的硬件抽象层 openhw_module_t common .method OVERLAY_HARDWARE_CONTROL OVERLAY_HARDWARE_DATA get createOverlay destroyOverlay setPosition getPosition setParameter hw_device_t initialize dequeueBu
12、ffer queueBuffer getBufferAddress hw_device_t w h format w_stride h_stride reserved3 getHandleRef reserved_procs7 overlay_module_t overlay_control_device_t overlay_data_device_t overlay_t int numFds; int fds4; int numInts; int data0; overlay_handle_t 第三部分 Overlay的硬件抽象层 Overlay硬件抽象层的一个实现示 在 下中实现: har
13、dware/libhardware/modules/overlay/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
14、Overlay module, author: The Android Open Source Project, 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) over
15、lay_control_device_t : createOverlay overlay_t : getHandleRef overlay_handle_t overlay_data_device_t : initialize(overlay_handle_t) overlay_data_device_t : dequeueBuffer overlay_data_device_t : queueBuffer overlay_data_device_t : getBufferAddress Overlay硬件抽象层fl要 一个视频显示的 实现。 Overlay的硬件抽象层通常 两个: frame
16、rbuffer Video for Linux 2中的视频输出。 framerbuffer的实现,通常 实现内地 的接口 。 v4l2的实 现 提供的接口, 的 , 中 分成 用内核内和 用用空间内两 。 第三部分 Overlay的硬件抽象层 第四部分 Camera系统与上层接口 a era框架和 a eraSer ice a era的 和 a era框架和 a eraSer ice 在Android 系统中, Android的 Camera包含取景器(viewfinder)、视频数 据获取(Recording)和拍摄照片的功能。 Camera部分的主要头的框架部分包含在 ui库的中,而Cam
17、era中间层的实现是 CameraService,CameraService通过调用下 层的Camera硬件抽象层来实现功能。 a era框架和 a eraSer ice Camera主要的头文件有以下几个: ICameraClient.h Camera.h ICamera.h ICameraService.h ICameraService.h、ICameraClient.h和 ICamera.h三个类定义了Camera的接口和架 构,ICameraService.cpp和Camera.cpp两个文件用 于Camera架构的实现,Camera的具体功能在下层 调用硬件相关的接口来实现。 Cam
18、era.h是Camera系统对上层的接口。 a era框架和 a eraSer ice ICameraClient BnCameraClient Camera ICamera BnCamera android_hardware_Camera JAVA ICameraService BnCameraService CameraService CameraService:Client a eraSer ice CameraHardwareInterface a era Camera ICameraClient ICameraService CameraHardwareInterface IPC H
19、ardware Camera lib Native Code a era框架和 a eraSer ice Camera.h是Camera系统上层的接 口 ICameraService.h、ICameraClient.h 和ICamera.h三个类定义 Camera中间层 实现的框架。接口的 , 是具有 Camera系统 的 个 : 预览 (Preview) 视频取 (Recording) 照照 (takePicture) Camera.h中定义Camera上层的接口。 / Typical use cases #define FRAME_CALLBACK_FLAG_NOOP 0 x00 #def
20、ine FRAME_CALLBACK_FLAG_CAMCORDER 0 x01 #define FRAME_CALLBACK_FLAG_CAMERA 0 x05 #define FRAME_CALLBACK_FLAG_BARCODE_SCANNER 0 x07 / msgType in notifyCallback and dataCallback functions enum CAMERA_MSG_ERROR = 0 x001, CAMERA_MSG_SHUTTER = 0 x002, CAMERA_MSG_FOCUS = 0 x004, CAMERA_MSG_ZOOM = 0 x008,
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5 积分
下载 | 加入VIP,下载共享资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手机开发培训 08_Android的Video 输入输出系统 手机 开发 培训 08 _Android Video 输入输出 系统
