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.

[参考译文] 使用 VOUT3时不显示 VISION SDK 视频覆盖

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1106454/vision-sdk-video-overlay-not-shown-when-using-vout3

器件型号:TDA2E


我们正在开发基于 DRA76x 的定制板。
我们正在使用 Vision SDK、其中我们开发了一个用例、用于显示 Android APK 上覆盖的摄像机。
我们的硬件可以从 VOUT1和 VOUT3输出视频。

当我们使用 VOUT1用于 Android 和 IPU 生成的摄像头覆盖时、所有视频系统都能正常工作。 我们有一个命令行工具来显示/隐藏摄像机覆盖、它工作正常。

但是、当我们尝试使用 VOUT3输出时、我们会面临一些问题。 在 u-boot 期间正确显示摄像机、但当内核启动时不显示视频、内核显示以下跟踪:

omapdrm omapdrm.0: lcd3: timeout waiting for enable


我们在论坛上找到了一些注释、指示为 VOUT3启用其他时钟:

--- a/kernel/android-4.4/drivers/gpu/drm/omapdrm/dss/dpi.c
+++ b/kernel/android-4.4/drivers/gpu/drm/omapdrm/dss/dpi.c
@@ -92,10 +92,10 @@ static enum dss_clk_source dpi_get_clk_src_dra7xx(enum omap_channel channel)
        }
        case OMAP_DSS_CHANNEL_LCD3:
        {
-               if (dss_pll_find_by_src(DSS_CLK_SRC_PLL2_1))
-                       return DSS_CLK_SRC_PLL2_1;
                if (dss_pll_find_by_src(DSS_CLK_SRC_PLL1_3))
                        return DSS_CLK_SRC_PLL1_3;
+               if (dss_pll_find_by_src(DSS_CLK_SRC_PLL2_1))
+                       return DSS_CLK_SRC_PLL2_1;
        }
        default:
                break;
@@ -137,7 +137,7 @@ static enum dss_clk_source dpi_get_clk_src(enum omap_channel channel)
                case OMAP_DSS_CHANNEL_LCD:
                        return DSS_CLK_SRC_PLL1_1;
                case OMAP_DSS_CHANNEL_LCD3:
-                       return DSS_CLK_SRC_PLL2_1;
+                       return DSS_CLK_SRC_PLL1_3;
                case OMAP_DSS_CHANNEL_LCD2:
                default:
                        return DSS_CLK_SRC_FCK;


通过此更改、我们有视频、但摄像头显示/隐藏功能不能按预期工作。
例如、如果我们运行设置 APK 并显示摄像头、则摄像头已正确重叠。 在执行 hide 和 show 命令后、不会显示摄像机覆盖图。 然后、如果我们终止设置 APK、我们将看到摄像机覆盖。
感觉摄像机覆盖层并不总是覆盖 Android 视频。

IPU 固件中的更改如下:

- pVInfo->vencId = SYSTEM_DCTRL_DSS_VENC_LCD1;
- pVInfo->outputPort = SYSTEM_DCTRL_DSS_DPI1_OUTPUT;
- ovlyPrms->vencId = SYSTEM_DCTRL_DSS_VENC_LCD1;

+ pVInfo->vencId = SYSTEM_DCTRL_DSS_VENC_LCD3;
+ pVInfo->outputPort = SYSTEM_DCTRL_DSS_DPI3_OUTPUT;
+ ovlyPrms->vencId = SYSTEM_DCTRL_DSS_VENC_LCD3;

DTS 中的更改包括:

&dss {
	status = "ok";
	vdda_video-supply = <&ldo5_reg>;

	ports {
		#address-cells = <1>;
		#size-cells = <0>;
		status = "ok";
		// VOUT1 - HDMI_CH2
		port@0 {
			reg = <0>;
			dss_vout1_out: endpoint {
				remote-endpoint = <&tfp410_in>;
				data-lines = <24>;
			};
		};
		// VOUT3 - HDMI_CH1
		port@2 {
			reg = <2>;
			dss_vout3_out: endpoint {
				remote-endpoint = <&tfp410_in>;
				data-lines = <24>;
			};
		};
	};
};

 &tfp410_in {
- 	remote-endpoint = <&dss_vout1_out>;
+ 	remote-endpoint = <&dss_vout3_out>;
 };

-&dss_vout3_out {
+&dss_vout1_out {
 	/delete-property/ remote-endpoint;
 };