This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VM:当 APP_DRAGE_GRAPING 的 update_interval 设置为 100ms 时、会发生闪烁

Guru**** 2429850 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1543835/tda4vm-flickering-occurs-when-update_interval-of-app_draw_graphics-is-set-to-100ms

器件型号:TDA4VM


工具/软件:

尊敬的 TI 支持人员:

我想以屏幕上的文本形式绘制一个相对较短周期内发生变化的状态。 简单的方法是使用 Draw2D API。

“update_interval"通常“通常为 500ms、但我想将其设置为 100ms。 我在下一个“Draw2D_drawstring ()“之前调用“Draw2D_clearString ()“,这样旧的工程图不会保留,但有时会闪烁。

static void app_draw_graphics(Draw2D_Handle *handle, Draw2D_BufInfo *draw2dBufInfo, uint32_t update_type)
{
    appGrpxDrawDefault(handle, draw2dBufInfo, update_type);

    if(update_type == 1)
    {
        Draw2D_FontPrm sHeading;
        sHeading.fontIdx = 2;
        
        char speed_msg[128] = "";
        snprintf(speed_msg, sizeof(speed_msg), "Speed : %.2f", vehicle_speed);
        Draw2D_clearString(handle, 10, 1020, sizeof(speed_msg), &sHeading);
        Draw2D_drawString(handle, 10, 1020, speed_msg, &sHeading);
    }
    return;
}

原因是什么?

我们的 SDK: ti-processor-sdk-rtos-j721e-evm-10_01_00_04

此致、
Daigo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daigo:

    您能分享哪个应用程序闪烁吗、我 在 multi_cam_app 中更改为 100ms、并且没有闪烁。

    如果我能从我这边重新创建它会很有帮助。

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    我在 avp4 中看到了这个问题、但在 multi_cam_app 中却是一样的。 我将共享我的所有更改。

    appGrpxInitParamsInit(&grpx_prms, obj->context);
    grpx_prms.draw_callback = app_draw_graphics;
    grpx_prms.update_interval = 100;
    appGrpxInit(&grpx_prms);

    static void app_draw_graphics(Draw2D_Handle *handle, Draw2D_BufInfo *draw2dBufInfo, uint32_t update_type)
    {
        appGrpxDrawDefault(handle, draw2dBufInfo, update_type);
    
        if(update_type == 0)
        {
            Draw2D_FontPrm sHeading;
    
            sHeading.fontIdx = 4;
            Draw2D_drawString(handle, 700, 5, "Multi Cam Demo", &sHeading);
        } else {
            Draw2D_FontPrm sHeading;
            sHeading.fontIdx = 2;
            
            char speed_msg[128] = "";
            snprintf(speed_msg, sizeof(speed_msg), "Speed : %.2f", 50.00f);
            Draw2D_clearString(handle, 10, 1020, sizeof(speed_msg), &sHeading);
            Draw2D_drawString(handle, 10, 1020, speed_msg, &sHeading);
        }
    
      return;
    }

    您能为我了解一下吗?

    此致、

    Daigo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daigo:

    您能分享闪烁视频、

    我进行了更改、没有看到任何闪烁、  

    附加视频以供参考、

    e2e.ti.com/.../VID20250729110849.mp4

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    感谢您的检查。  您的环境中似乎没有出现闪烁。

    我附上了我的视频。

    我不知道这是否与问题有关、但我应用了您的补丁、为 avp4 启用全局 alpha。

    此致、

    Daigo

    e2e.ti.com/.../IOHD0049.MP4

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daigo:

    你说的是文本闪烁吗?

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    你说的是文本闪烁吗?

    是的。 您的理解是正确的。

    此致、

    Daigo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daigo:

    这是因为数组大小为 128 将清除整个行、  

    将 speed_msg 数组大小更改为 20。

    这将解决您的问题。

    此致、
    Gokul  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    你是对的,但速度部分有时仍然闪烁。

    绘图回调与显示更新之间是否不匹配?

    e2e.ti.com/.../IOHD0050.MP4

    此致、

    Daigo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daigo:

    是否可以注释掉 Draw2D_clearString() 并查看这是否有帮助?

    实际上我们只更新缓冲区、显示器可能在我们清除缓冲区时准确地使用缓冲区、因此您可能会看到这些文本闪烁。
    缓冲区的更新与显示屏不同步。

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    我知道,评论出来会解决问题。

    但是,由于实际速度值在一到三位数之间变化,如果我不使用该函数,我必须使用一些巧妙的方法,例如在显示字符串中插入空格。 这是非常麻烦的。

    并且缓冲区的更新与显示屏不同步。

    目前是否有同步此操作的方法?

    此致、

    Daigo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daigo:

    否、我们目前没有同步功能。

    您应该自行开发,方法是将缓冲区作为该显示节点的图形参数,该显示节点负责性能图形并使其从应用程序中排队/出队。

    此致、
    Gokul

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Gokul:

    好的、感谢您的回答。

    此致、

    Daigo