📄 parse_display_cmdline.c
字号:
i += 2; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-hdmi")) { options->hdmi_force = TRUE; options->hdmi_monitor = TRUE; // force HDMI i++; if ((argc > i) && opt_arg(argv[i][0])) { // optional argument: force DVI or HDMI options->hdmi_monitor = ((argv[i][0] == '0') || (argv[i][0] == 'd') || (argv[i][0] == 'D')) ? FALSE : TRUE; i++; } err = RM_OK; } else if (RMCompareAscii(argv[i], "-hdcp")) { options->dvi_hdmi_hdcp = TRUE; i++; err = RM_OK; } else if (RMCompareAscii(argv[i], "-edid")) { options->dvi_hdmi_display_edid = TRUE; i++; err = RM_OK; } else if (RMCompareAscii(argv[i], "-hdmi_de")) { options->hdmi_de = TRUE; i++; err = RM_OK; } else if (RMCompareAscii(argv[i], "-no_disp")) { options->configure_outports = FALSE; i++; err = RM_OK; } else if (RMCompareAscii(argv[i], "-edmode")) { if (argc > i + 4) { RMuint32 intl; RMasciiToUInt32(argv[i + 1], &(options->dvi_hdmi_edid_hsize)); RMasciiToUInt32(argv[i + 2], &(options->dvi_hdmi_edid_vsize)); RMasciiToUInt32(argv[i + 3], &(options->dvi_hdmi_edid_vfreq)); if ((argv[i + 4][0] == 'p') || (argv[i + 4][0] == 'P')) { intl = FALSE; } else if ((argv[i + 4][0] == 'i') || (argv[i + 4][0] == 'I')) { intl = TRUE; } else { RMasciiToUInt32(argv[i + 4], &intl); } options->dvi_hdmi_edid_intl = (intl ? TRUE : FALSE); options->standard = EMhwlibTVStandard_HDMI_480p59; // fallback standard if (options->edid_sel != DH_EDID_fmatch) { options->edid_sel = DH_EDID_match; } i += 5; err = RM_OK; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-edforce")) { if (options->edid_sel == DH_EDID_none) { options->standard = EMhwlibTVStandard_HDMI_480p59; // fallback standard } options->edid_sel = DH_EDID_fmatch; i++; err = RM_OK; } else if (RMCompareAscii(argv[i], "-edid_exclude")) { i++; if (argc <= i) err = RM_ERROR; while ((err != RM_ERROR) && (argc > i) && opt_arg(argv[i][0])) { err = parse_hdmi_mask(argv[i], &(options->edid_exclude_mask), &(options->edid_exclude_mask_vfreq), &(options->edid_exclude_mask_asp)); if (RMSUCCEEDED(err)) { options->standard = EMhwlibTVStandard_HDMI_480p59; // fallback standard options->edid_sel = DH_EDID_mask; } i++; } } else if (RMCompareAscii(argv[i], "-edid_force")) { i++; if (argc <= i) err = RM_ERROR; while ((err != RM_ERROR) && (argc > i) && opt_arg(argv[i][0])) { err = parse_hdmi_mask(argv[i], &(options->edid_force_mask), &(options->edid_force_mask_vfreq), &(options->edid_force_mask_asp)); if (RMSUCCEEDED(err)) { options->standard = EMhwlibTVStandard_HDMI_480p59; // fallback standard options->edid_sel = DH_EDID_mask; } i++; } } else if (RMCompareAscii(argv[i], "-edid_limits")) { options->edid_min_pixclk = 0; options->edid_max_pixclk = 0; options->edid_min_hfreq = 0; options->edid_max_hfreq = 0; options->edid_min_vfreq = 0; options->edid_max_vfreq = 0; i++; if ((argc > i) && opt_arg(argv[i][0])) { RMasciiToUInt32(argv[i], &(options->edid_min_pixclk)); i++; if ((argc > i) && opt_arg(argv[i][0])) { RMasciiToUInt32(argv[i], &(options->edid_max_pixclk)); i++; if ((argc > i) && opt_arg(argv[i][0])) { RMasciiToUInt32(argv[i], &(options->edid_min_hfreq)); i++; if ((argc > i) && opt_arg(argv[i][0])) { RMasciiToUInt32(argv[i], &(options->edid_max_hfreq)); i++; if ((argc > i) && opt_arg(argv[i][0])) { RMasciiToUInt32(argv[i], &(options->edid_min_vfreq)); i++; if ((argc > i) && opt_arg(argv[i][0])) { RMasciiToUInt32(argv[i], &(options->edid_max_vfreq)); i++; } } } } } } if (options->edid_sel == DH_EDID_none) { options->standard = EMhwlibTVStandard_HDMI_480p59; // fallback standard options->edid_sel = DH_EDID_mask; } err = RM_OK; } else if (RMCompareAscii(argv[i], "-edwrite")) { if (argc > i + 1) { options->dvi_hdmi_edid_write = TRUE; options->dvi_hdmi_edid_file = argv[i + 1]; i += 2; err = RM_OK; } else { err = RM_ERROR; } } else if (RMCompareAscii(argv[i], "-edread")) { if (argc > i + 1) { options->dvi_hdmi_edid_read = TRUE; options->dvi_hdmi_edid_file = argv[i + 1]; i += 2; err = RM_OK; } else { err = RM_ERROR; } } else if (RMCompareAscii(argv[i], "-force_edid")) { if (argc > i + 1) { options->dvi_hdmi_edid_override = TRUE; options->dvi_hdmi_edid_file = argv[i + 1]; i += 2; err = RM_OK; } else { err = RM_ERROR; } } else if (RMCompareAscii(argv[i], "-ed")) { if (argc > i+1) { if (argv[i + 1][0] == 'n') { options->edid_sel = DH_EDID_native; } else { RMasciiToUInt32(argv[i+1], &(options->dvi_hdmi_edid_descriptor)); options->edid_sel = DH_EDID_force; } options->standard = EMhwlibTVStandard_HDMI_480p59; // fallback standard i += 2; err = RM_OK; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-hdmi2c")) { if (argc > i+1) { RMasciiToUInt32(argv[i+1], &(options->i2c_module)); i += 2; if ((argc > i) && (argv[i][0] >= '0') && (argv[i][0] <= '9')) { RMasciiToUInt32(argv[i], &(options->i2c_speed)); i++; } err = RM_OK; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-hdmi_ddc_tx")) { options->i2c_ddc_on_tx = TRUE; i++; err = RM_OK; } else if (RMCompareAscii(argv[i], "-dvi_reset")) { if (argc > i+1) { RMasciiToUInt32(argv[i+1], &(options->dvi_reset_gpio)); i += 2; err = RM_OK; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-hdmi_act")) { if (argc > i+1) { options->hdmi_active_format_valid = TRUE; if (RMCompareAscii(argv[i+1], "none")) { options->hdmi_active_format_valid = FALSE; } else if (RMCompareAscii(argv[i+1], "full")) { options->hdmi_active_format = DH_af_same_as_picture; } else if (RMCompareAscii(argv[i+1], "16x9top")) { options->hdmi_active_format = DH_af_16x9_top; } else if (RMCompareAscii(argv[i+1], "14x9top")) { options->hdmi_active_format = DH_af_14x9_top; } else if (RMCompareAscii(argv[i+1], "64x27")) { options->hdmi_active_format = DH_af_64x27_centered; } else if (RMCompareAscii(argv[i+1], "4x3")) { options->hdmi_active_format = DH_af_4x3_centered; } else if (RMCompareAscii(argv[i+1], "16x9")) { options->hdmi_active_format = DH_af_16x9_centered; } else if (RMCompareAscii(argv[i+1], "14x9")) { options->hdmi_active_format = DH_af_14x9_centered; } else if (RMCompareAscii(argv[i+1], "4x3_14x9")) { options->hdmi_active_format = DH_af_4x3_centered_prot_14x9; } else if (RMCompareAscii(argv[i+1], "16x9_14x9")) { options->hdmi_active_format = DH_af_16x9_centered_prot_14x9; } else if (RMCompareAscii(argv[i+1], "16x9_4x3")) { options->hdmi_active_format = DH_af_16x9_centered_prot_4x3; } else { err = RM_ERROR; } if (err != RM_ERROR) err = RM_OK; i += 2; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-hdmi_bars")) { if (argc > i+4) { RMasciiToUInt32(argv[i+1], &(options->hdmi_bar_top)); RMasciiToUInt32(argv[i+2], &(options->hdmi_bar_bottom)); RMasciiToUInt32(argv[i+3], &(options->hdmi_bar_left)); RMasciiToUInt32(argv[i+4], &(options->hdmi_bar_right)); err = RM_OK; i+=5; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-hdmi_underscan")) { options->hdmi_scan = EMhwlibScanInfo_Underscanned; i++; err = RM_OK; } else if (RMCompareAscii(argv[i], "-hdmi_scan")) { if (argc > i + 1) { i++; err = RM_OK; if ((argv[i][0] == 'o') || (argv[i][0] == 'O')) { options->hdmi_scan = EMhwlibScanInfo_Overscanned; } else if ((argv[i][0] == 'u') || (argv[i][0] == 'U')) { options->hdmi_scan = EMhwlibScanInfo_Underscanned; } else { err = RM_ERROR; } } else err = RM_ERROR; i++; } else if (RMCompareAscii(argv[i], "-hdmi_spd")) { if (argc > i + 2) { options->hdmi_spd_vendor = argv[i + 1]; options->hdmi_spd_product = argv[i + 2]; options->hdmi_spd_class = DH_source_dev_unknown; err = RM_OK; i += 3; if ((argc > i) && opt_arg(argv[i][0])) { if (RMCompareAscii(argv[i], "STB")) { options->hdmi_spd_class = DH_source_dev_DigitalSTB; } else if (RMCompareAscii(argv[i], "DVD")) { options->hdmi_spd_class = DH_source_dev_DVD; } else if (RMCompareAscii(argv[i], "DVHS")) { options->hdmi_spd_class = DH_source_dev_DVHS; } else if (RMCompareAscii(argv[i], "HDD")) { options->hdmi_spd_class = DH_source_dev_HDDVideo; } else if (RMCompareAscii(argv[i], "DVC")) { options->hdmi_spd_class = DH_source_dev_DVC; } else if (RMCompareAscii(argv[i], "DSC")) { options->hdmi_spd_class = DH_source_dev_DSC; } else if (RMCompareAscii(argv[i], "VCD")) { options->hdmi_spd_class = DH_source_dev_VideoCD; } else if (RMCompareAscii(argv[i], "Game")) { options->hdmi_spd_class = DH_source_dev_Game; } else if (RMCompareAscii(argv[i], "PC")) { options->hdmi_spd_class = DH_source_dev_PC; } else if (RMCompareAscii(argv[i], "BluRay")) { options->hdmi_spd_class = DH_source_dev_BluRay; } else if (RMCompareAscii(argv[i], "SACD")) { options->hdmi_spd_class = DH_source_dev_SACD; } else { fprintf(stderr, "Unknown HDMI SPD class: %s\n", argv[i]); err = RM_ERROR; } i++; } } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-tmds_mode")) { if (argc > i+2) { RMuint32 gpio; RMasciiToUInt32(argv[i+1], &(gpio)); options->tmds_gpio = (enum GPIOId_type)gpio; RMasciiToUInt32(argv[i+2], &(options->tmds_threshold)); i += 3; err = RM_OK; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-filter_gpio")) { if (argc > i+3) { RMuint32 gpio; RMasciiToUInt32(argv[i+1], &(gpio)); options->filter_gpio_start = (enum GPIOId_type)gpio; RMasciiToUInt32(argv[i+2], &(options->filter_gpio_num)); RMasciiToUInt32(argv[i+3], &(options->filter_gpio_val)); i += 4; err = RM_OK; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-mv_filter")) { if (argc > i+1) { if (RMCompareAscii(argv[i], "0")) { options->filtermode.Boundary_0_1 = 0x4000; options->filtermode.Boundary_1_2 = 0x4000; options->filtermode.Boundary_2_3 = 0x4000; } else if (RMCompareAscii(argv[i+1], "1")) { options->filtermode.Boundary_0_1 = 0x0000; options->filtermode.Boundary_1_2 = 0x4000; options->filtermode.Boundary_2_3 = 0x4000; } else if (RMCompareAscii(argv[i+1], "2")) { options->filtermode.Boundary_0_1 = 0x0000; options->filtermode.Boundary_1_2 = 0x0000; options->filtermode.Boundary_2_3 = 0x4000; } else if (RMCompareAscii(argv[i+1], "3")) { options->filtermode.Boundary_0_1 = 0x0000; options->filtermode.Boundary_1_2 = 0x0000; options->filtermode.Boundary_2_3 = 0x0000; } else if (RMCompareAscii(argv[i+1], "auto")) { options->filtermode.Boundary_0_1 = 0x1400; options->filtermode.Boundary_1_2 = 0x1c00; options->filtermode.Boundary_2_3 = 0x2c00; } else err = RM_ERROR; i += 2; err = RM_OK; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-luma_lpf")) { if (argc > i+1) { if (RMCompareAscii(argv[i], "0")) { options->downscalingmode.Discard = FALS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -