尊敬的老师:
非常感谢您对https://www.deyisupport.com/question_answer/f/22/p/1292/3176.aspx#3176的回复。我仔细阅读了你的建议http://processors.wiki.ti.com/index.php/Adding_Display_Resolutions_to_DMAI
但是还是有一些疑问。
从文章上看虽然是dvsdk2的但我对照dvsdk4里面,应该是可以用的。
文章中的做法就是首先需要lcd的驱动(文章中是avnetlcd_encoder.c),
static struct avnetlcd_encoder_config avnetlcd_encoder_configuration = {.no_of_outputs = AVNETLCD_ENCODER_MAX_NO_OUTPUTS,.output[0] = {.output_name = VID_ENC_OUTPUT_LCD1,//vid_encoder_types.h中有#define VID_ENC_OUTPUT_LCD1"LCD1".no_of_standard = AVNETLCD_ENCODER_GRAPHICS_NUM_STD,.standards[0] = {.name = VID_ENC_STD_800x480,.std = 1,.if_type = VID_ENC_IF_PRGB,.interlaced = 0,.xres = 800,.yres = 480,.fps = {60, 1},.left_margin = 216,.right_margin = 40,.upper_margin = 32,.lower_margin = 11,.hsync_len = 9,.vsync_len = 9,.flags = 0},},/* hsync -ve, vsync -ve */ };
然后在应用程序display.c中添加
/* Strings for sysfs video output variables */
static Char *outputStrings[Display_Output_COUNT] = {
"SVIDEO",
"COMPOSITE",
"COMPONENT",
"LCD",
"LCD1", //似乎是通过“LCD1”这个名字与上面驱动中的红字部分关联起来
"DVI",
NULL
};
这样应用程序中便可以象普通显示设备一样使用LCD1。
但我的第一个疑问是:文章的前部分,在dmai的appMain.c添加lcd的配置信息(即Display_Attrs_DM365_OSD_DEFAULT)是干什么用的?好像这个配置和驱动程序没有什么关联的地方或语句?应用程序main.c也没有display.c那样引用"LCD1",但从Display_Attrs_DM365_OSD_DEFAULT的定义又感觉确实和LCD显示有关,真不知道这个Display_Attrs_DM365_OSD_DEFAULT是如何和驱动关联起来?
注:Display_Attrs_DM365_OSD_DEFAULT和缺省的Display_Attrs_DM365_VID_DEFAULT的区别就是:1)显示设备不同(vid是/dev/video2,osd是/dev/fb0);2)colorspace不同(vid是NV12,osd是RGB565)。
另一个问题是如上面“注”所说,Display_Attrs_DM365_OSD_DEFAULT接收的数据是RGB565,那么NV12视频数据该如何显示在LCD上呢?
xiao zhou:
关注,顶一下,不知道楼主问题解决没有?如果解决了,也回一下,让我们学习一下。
Tuff Li:
回复 xiao zhou:
请参考DMAI下display相关的代码,里面有如何操作/dev/fb/0或者/dev/video0设备节点的动作
如果要显示NV12到RGB接口的设备,只需要指明显示buffer属性为NV12即可,DM36x VPBE内部会自动转换成RGB