Edit online

色彩调整

4 Dec 2024
Read time: 2 minute(s)

ArtInChip 平台显示引擎支持色彩调整,当前 Luban-Lite SDK 仅支持 Video 图层进行色彩调整。

通过调整亮度,对比度,饱和度,色调等属性,可以使同一张图片或一段视频在 video 图层呈现不同的显示效果。详细配置流程如下所示:

  1. 定义结构体 aicfb_disp_prop,用于存储亮度、对比度、饱和度和色调的参数。
  2. 定义 ioctl 命令,分别用于设置和获取显示属性。
    // bsp/artinchip/include/uapi/artinchip_fb.h
    
    /*
     * struct aicfb_disp_prop - aicfb display property
     *
     * @bright: bright in percent, range [0, 100], 50 means no effect
     * @contrast: contrast in percent, range [0, 100], 50 means no effect
     * @saturation: saturation in percent, range [0, 100], 50 means no effect
     * @hue: hue in percent, range [0, 100], 50 means no effect
     */
    struct aicfb_disp_prop {
        unsigned int bright;
        unsigned int contrast;
        unsigned int saturation;
        unsigned int hue;
    };
    
    /** set display property */
    #define AICFB_SET_DISP_PROP _IOW(IOC_TYPE_FB, 0x60, struct aicfb_disp_prop)
    
    /** get display property */
    #define AICFB_GET_DISP_PROP _IOR(IOC_TYPE_FB, 0x61, struct aicfb_disp_prop)
    • bright

      显示亮度,[0, 100], 缺省等于 50,50 表示不调节亮度。

    • contrast

      显示对比度,[0, 100], 缺省等于 50,50 表示不调节对比度。

    • saturation

      显示饱和度,[0, 100], 缺省等于 50,50 表示不调节饱和度。

    • hue

      显示色调,[0, 100], 缺省等于 50,50 表示不调节色调。

  3. 下放 ioctl 中的 AICFB_SET_DISP_PROPAICFB_GET_DISP_PROP,调整 Video 图层的显示效果。
    struct aicfb_disp_prop prop = {50, 50, 50, 50};
    
    mpp_fb_ioctl(fb, AICFB_GET_DISP_PROP, &prop)
    
    prop.bright = 40;
    prop.contrast = 30;
    prop.saturation = 45;
    prop.hue = 45;
    mpp_fb_ioctl(fb, AICFB_SET_DISP_PROP, &prop)

    Luban-Lite SDK 提供 disp_prop 命令进行 video 图层色彩调整,详情可见 disp_prop 测试