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.

[参考译文] Linux/TMS320DM8127:为 OSD 文本着色

Guru**** 2609895 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/638132/linux-tms320dm8127-coloring-osd-text

器件型号:TMS320DM8127

工具/软件:Linux

在上一个主题中-我无法打开任何新消息-   :

您好、Mechi、

对于 YUV420SP Y 和 UV 文件、只有具有不同大小的白色字体、这些文件可从  Source/IPNC_RDK/IPNC_mcfw/mcfw/src_bios6/links_m3vpss/ALG/SW_OSD/fonts/中获取。

您可以通过生成 YUV420SP Y 和 UV 独立文件来使用任何颜色字体、并将其添加到  Source/IPNC_RDK/IPNC_mcfw/mcfw/src_bios6/links_m3vpss/SRC_files.mk SRCS_SWOSD 中。

此致、

普拉什兰特

可用于 OSD 文本的字符包括:

#define SWOSD_STRINGPATTERN"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz:'/\+-_()&$#.0123456789"

我知道您提到的文件包含这些字符的 Y 和 UV 数据。

  • 是否有工具可以生成这些文件?
  • 它们是如何安排的?
  • 如果我想添加新字符、是否可能?
  • 如果我希望文本有时为白色、有时为红色、我如何指定它? 我无法想象为红色字母创建一个新的 UV 文件、如果不将红色文本添加到 SWOSD lib'的源代码中、则可能会显示红色文本。

感谢您提供这些重要信息-我将尝试创建一个新的红色字体、以便在需要使用红色字母时使用。 这是否是继续操作的方法?

谢谢、

梅希

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

    您现在应该能够在原始线程中进行回复。 请继续讨论原始主题。

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

    您好、Mechi、

    生成 Y 和 UV 文本文件的步骤:

    •  打开 Paint 并创建所有大小(宽度)相等的字符的 JPEG 文件。 如果您需要红色 OSD 字体、您需要在此处使用红色字体。
    •  将 JPEG 转换为 YUV420SP 并创建单独的 Y 和 UV 字符阵列文件。

    需要按照 Y 和 UV 文件在 SWOSD_STRINGPATTERNS 中按顺序写入。 是的、您可以添加新字符、但也请确保将其添加到 SWOSD_STRINGPATTERIN 中。

    对于您的最后一点、您可以更改字体颜色运行时间、因为它会根据分辨率更改字体大小。 在这里、您需要编写新的 API/大小写才能更改颜色(更改为红色字体缓冲区地址)。

    此致、
    普拉什兰特
    Pathpartner Technology Pvt. Ltd.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是如何实现的?
    >>将 JPEG 转换为 YUV420SP
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们准备了4种彩色字体。 我需要将这些字体用于不同的屏幕分辨率。

    由于存储器处于高级状态、我不想分配超出所需的空间。 我想知道为什么 fontDB 是一个包含256个整数的数组?

    int fontDB1232_Y1[256]、fontDB1232_UV1[256];

    int fontDB1078_Y1[256]、fontDB1078_UV1[256];

    我没有 创建字体数据库的函数 SWOSD_createFontDatabase 的代码。

    我知道有77个字符-  

    #define SWOSD_STRINGPATTERN"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz:'/\+-_()&$#.0123456789"

    SWOSD_createFontDatabase (fontDB1078_Y1、fontDB1078_UV1、(char *) SWOSD_STRINGPATTERN、&fontInfo);

    我想知道这是否是一个无法更改的设置大小? 如果我只想使用26个大写字母、我可以在 fontDB 数组中保存空间吗?

    谢谢、

    梅希

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

    您好、Mechi、

    是的、您可以根据   需要更新 SWOSD_STRINGPATTERN、该要求将在 memcpy (fontBuff1232_Y1、YData_1232_30_WFONT_PURE、       SWOSD_StringWidth_1232_30 * SWOSD_CHARHEIGHT_1232_30)中使用;

    此处 SWOSD_StringWidth_1232_30为 SWOSD_STRINGPATTERN * SWOSD_CHARWIDTH_1232_30;

    我认为 fontDB1078_UV1[256]是最大大小。 您可以尝试使用更小的阵列大小。

    此致、
    普拉什兰特
    Pathpartner Technology Pvt. Ltd.

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

    我们成功地获得了彩色字体...

    图片未聚焦、但 OSD 写入在顶部和底部行上可见。