zoukankan      html  css  js  c++  java
  • (四)DirectFB 接口

     桌面GUI系统涉及很多图像运算,比如画点、画线、填充、透明度处理、平滑度处理、层的叠加、字体处理、贴图等等。如果这些运算都由CPU来处理,那这将是对CPU的一个很大的负载。

    DirectFB是一个专门针对Linux图形库设计的图形加速中间层。它的上层直接面向图形库比如QT,提供如显示、画图、输入设备控制等服务,他的下层直接面向GFX加速硬件,要求硬件驱动实现全部或部分预定的画图函数。

     

    3.1 主要接口   
        . IDirectFBScreen 显示屏幕
        . IDirectbFBDisplayLayer 显示层
        . IDirectFBSurface 显示表面


      三者之间的关系如下:

    显示屏幕 <-- Output(connector) <--  IDirectFBScreen <-- (mixer)DisplayLayers  <--DisplayLayer's IDirectFBSurface <-- gfx Accelarator  <--- 显卡/或CPU运算画图

      首先,用户在显示屏幕上看到一个Screen的输出,这个Screen由多个画面组成(比如同时包含:背景图片,前景视频/字幕/图片)。组成Screen的每个画面,都由一个单独的DisplayLayer来处理。多个DisplayLayers由Mixer来决定叠加的顺序/位置/以及透明度等。单独一个显示层DisplayLayer,可自由控制输出大小(放大/缩小)、背景颜色、翻转等。DisplayLayer所显示的数据(比如解析JPEG产生的RGB数据),则需要在DisplayLayer上生成一个Surface来显示,Surface控制实际的贴图操作,比如:画点/线/框/填充/变换位数、色深、分辨率,等等, Surface可直接和硬件加速打交道(gfxcard)。

     

    DisplayLayers和Surface都是Screen的后端,Screen的前端(就是输出部分),还有Encoder,Output等概念。Encoder着重描述输出信号的编码参数,Output着重描述输出接口. 它们有以下重要成员:

    Standards  :配置输出制式(标清/高清/PAL/NTSC/>>扩展<<)

    Signals    :配置输出信号(VGA/YC/CVBS/RGB/YCBCR/HDMI/656/>>扩展<<)

    Connectors :配置输出接口(VGA/SCART/YC/CVBS/SCART2/COMPONENT/HDMI/>>扩展<<)

    Resolution :配置输出分辨率(directfb.h中所列举的常见分辨率/>>扩展<<)

    从Screen到Encoder,再从Encoder到Output的connector,最后到显示屏幕,DirectFB的底层实现者需要做的就是根据目标硬件的特性,实现这条路线中各条通路,DirectFB的使用者需要做的就是通过Screen的成员函数配置、使用这些通路。

     

    3.2 Provider 类型接口

    IDirectFBImageProvider
    IDirectFBVideoProvider
    IDirectFBFont

    此类接口提供特殊的图形输出,图像,视频,字体

     

    以下医视频输出主要步骤如下:

    DirectFBCreate( &dfb ) 

    dfb->CreateVideoProvider( dfb, url, &provider )

    provider->GetSurfaceDescription( provider, &desc );

    dfb->CreateSurface( dfb, &desc, &dest );

    provider->PlayTo( provider, dest, NULL, Frame_Callback, dest );

     

    3.3 其它接口

    IDirectFBEventBuffer

    IDirectFBDataBuffer

    IDirectFBInputDevice

     

    IDirectFBEventBuffer: 事件同步机制,一端接入产生事件的设备,使用PostEvent之类的接口递交事件,另一端使用WaitForEvent之类的接口等待事件,使用GetEvent之类的接口获取事件。

      

    IDirectFBDataBuffer: 数据DataBuffer缓冲,提供同步等待功能,并提供CreateXXXProvider(XXX=Image/Video)功能,在原代码中被广泛使用.

        IDirectFBInputDevice: 输入设备接口    

  • 相关阅读:
    将一个dropdownlist从一个div复制到另一个div
    【转】AOP 那点事儿(续集)
    【转】AOP 那点事儿
    spring 简单配置
    spring 基础原理
    jvm简介
    jre、jdk和jvm的关系
    【转】Jvm工作原理
    servlet简述
    Filter简述
  • 原文地址:https://www.cnblogs.com/wolfrickwang/p/3516957.html
Copyright © 2011-2022 走看看