📄 parse_display_cmdline.c
字号:
options->dvi_hdmi_edid_vsize = 1080; options->dvi_hdmi_edid_vfreq = 60; options->dvi_hdmi_edid_intl = FALSE; } else if (RMCompareAscii(argv[i], "vga")) { options->dvi_hdmi_edid_hsize = 640; options->dvi_hdmi_edid_vsize = 480; options->dvi_hdmi_edid_vfreq = 60; options->dvi_hdmi_edid_intl = FALSE; } else if ((argv[i][0] >= '0') && (argv[i][0] <= '9')) { RMint32 VIC; RMasciiToInt32(argv[i], &VIC); if ((VIC == 0) || (VIC > 59)) { fprintf(stderr, "VIC out of range: %lu\n", VIC); err = RM_ERROR; } else { options->dvi_hdmi_edid_descriptor = VIC; // hack } } else { fprintf(stderr, "Unknown resolution: -r %s\n", argv[i]); err = RM_ERROR; } } else { err = RM_OK; options->edid_sel = DH_EDID_auto; options->standard = EMhwlibTVStandard_HDMI_480p59; // fallback standard } i++; }#ifdef RMFEATURE_HAS_HDSD_CONVERTER else if (RMCompareAscii(argv[i], "-sdf50")) { if (argc > i+1) { err = GetTVStandard(argv[i+1], &(options->sd_standard_50Hz)); i += 2; } else { err = RM_ERROR; } } else if (RMCompareAscii(argv[i], "-sdf60")) { if (argc > i+1) { err = GetTVStandard(argv[i+1], &(options->sd_standard_60Hz)); i += 2; } else { err = RM_ERROR; } } else if (RMCompareAscii(argv[i], "-sdf")) { options->use_hdsd_conversion = TRUE; if ((argc > i+1) && (argv[i+1][0] != '-')) { err = GetTVStandard(argv[i+1], &(options->sd_standard)); i++; } else { options->sd_autodetect = TRUE; err = RM_OK; } i++; } else if (RMCompareAscii(argv[i], "-sdbuf")) { i++; options->allow_otf = FALSE; err = RM_OK; } else if (RMCompareAscii(argv[i], "-sdotf")) { i++; options->allow_buf = FALSE; err = RM_OK; } else if (RMCompareAscii(argv[i], "-sdcav")) { i++; options->sd_component = TRUE; err = RM_OK; } else if (RMCompareAscii(argv[i], "-hdcav")) { i++; options->sd_cav_1080p = TRUE; err = RM_OK; } else if (RMCompareAscii(argv[i], "-sdasp")) { if (argc > i+2) { RMasciiToUInt32(argv[i+1], &(options->sd_ar_x)); RMasciiToUInt32(argv[i+2], &(options->sd_ar_y)); i += 3; err = RM_OK; } else err = RM_ERROR; }#endif else if (RMCompareAscii(argv[i], "-vgaf")) { if (argc > i+1) { if (RMCompareAscii(argv[i+1], "edid")) { options->vga_standard = EMhwlibTVStandard_HDMI_480p59; // fallback standard options->vga_edid_sel = DH_EDID_auto; err = RM_OK; } else { err = GetTVStandard(argv[i+1], &(options->vga_standard)); } i += 2; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-vmf")) { if (argc > i+1) { strncpy(options->vidmode_filename, argv[i + 1], 2048); options->vidmode_filename[2047] = '\0'; options->standard = EMhwlibTVStandard_Custom; err = RM_OK; i += 2; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-o")) { if (argc > i+1) { if (RMCompareAscii(argv[i+1], "svideo")) { options->connector = DCCVideoConnector_SVIDEO; } else if (RMCompareAscii(argv[i+1], "composite") || RMCompareAscii(argv[i+1], "cvbs")) { options->connector = DCCVideoConnector_COMPOSITE; } else if (RMCompareAscii(argv[i+1], "component_rgb_scart")) { options->connector = DCCVideoConnector_COMPONENT; options->component = EMhwlibComponentMode_RGB_SCART; } else if (RMCompareAscii(argv[i+1], "component_rgb_sog")) { options->connector = DCCVideoConnector_COMPONENT; options->component = EMhwlibComponentMode_RGB_SOG; } else if (RMCompareAscii(argv[i+1], "component_rgb_smpte")) { options->connector = DCCVideoConnector_COMPONENT; options->component = EMhwlibComponentMode_RGB_SMPTE; } else if (RMCompareAscii(argv[i+1], "component_yuv_betacam")) { options->connector = DCCVideoConnector_COMPONENT; options->component = EMhwlibComponentMode_YUV_BETACAM; } else if (RMCompareAscii(argv[i+1], "component_yuv_m2")) { options->connector = DCCVideoConnector_COMPONENT; options->component = EMhwlibComponentMode_YUV_M2; } else if (RMCompareAscii(argv[i+1], "component_yuv_smpte") || RMCompareAscii(argv[i+1], "cav")) { options->connector = DCCVideoConnector_COMPONENT; options->component = EMhwlibComponentMode_YUV_SMPTE; } else if (RMCompareAscii(argv[i+1], "scart")) { options->connector = DCCVideoConnector_SCART; } else if (RMCompareAscii(argv[i+1], "dvi_8")) { options->connector = DCCVideoConnector_DVI; options->bus_size = 8; } else if (RMCompareAscii(argv[i+1], "dvi_16")) { options->connector = DCCVideoConnector_DVI; options->bus_size = 16; } else if (RMCompareAscii(argv[i+1], "dvi_24") || RMCompareAscii(argv[i+1], "dvi") || RMCompareAscii(argv[i+1], "hdmi")) { options->connector = DCCVideoConnector_DVI; options->bus_size = 24; } else if (RMCompareAscii(argv[i+1], "lvds")) { options->connector = DCCVideoConnector_LVDS; options->bus_size = 24; } else if (RMCompareAscii(argv[i+1], "dig_8")) { options->connector = DCCVideoConnector_Digital; options->bus_size = 8; } else if (RMCompareAscii(argv[i+1], "dig_16")) { options->connector = DCCVideoConnector_Digital; options->bus_size = 16; } else if (RMCompareAscii(argv[i+1], "dig_24")) { options->connector = DCCVideoConnector_Digital; options->bus_size = 24; } else if (RMCompareAscii(argv[i+1], "vga")) { options->connector = DCCVideoConnector_VGA; } else err = RM_ERROR; if (err != RM_ERROR) { switch (options->connector) { case DCCVideoConnector_DVI: // HDMI: default to video mode from EDID if ((options->standard == EMhwlibTVStandard_NTSC_M) && (options->edid_sel == DH_EDID_none)) { options->edid_sel = DH_EDID_auto; options->standard = EMhwlibTVStandard_HDMI_480p59; // fallback standard } break; case DCCVideoConnector_VGA: case DCCVideoConnector_LVDS: case DCCVideoConnector_Digital: // LVDS/VGA: default to VGA resolution (640x480) if (options->standard == EMhwlibTVStandard_NTSC_M) { options->standard = EMhwlibTVStandard_VESA_640x480x60; // fallback standard } break; default: break; } err = RM_OK; } i += 2; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-cs")) { if (argc > i+1) { err = parse_color_space(argv[i + 1], &(options->color_space)); if (options->color_space == EMhwlibColorSpace_None) err = RM_ERROR; i += 2; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-mcs")) { if (argc > i+1) { err = parse_color_space(argv[i + 1], &(options->mixer_color_space)); i += 2; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-asp")) { if (argc > i+2) { RMasciiToUInt32(argv[i+1], &(options->ar_x)); RMasciiToUInt32(argv[i+2], &(options->ar_y)); i += 3; err = RM_OK; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-afd")) { if (argc > i+1) { options->active_format_valid = TRUE; if (RMCompareAscii(argv[i+1], "none")) { options->active_format_valid = FALSE; } else if (RMCompareAscii(argv[i+1], "full")) { options->active_format = EMhwlibAF_same_as_picture; } else if (RMCompareAscii(argv[i+1], "16x9top")) { options->active_format = EMhwlibAF_16x9_top; } else if (RMCompareAscii(argv[i+1], "14x9top")) { options->active_format = EMhwlibAF_14x9_top; } else if (RMCompareAscii(argv[i+1], "64x27")) { options->active_format = EMhwlibAF_64x27_centered; } else if (RMCompareAscii(argv[i+1], "4x3")) { options->active_format = EMhwlibAF_4x3_centered; } else if (RMCompareAscii(argv[i+1], "16x9")) { options->active_format = EMhwlibAF_16x9_centered; } else if (RMCompareAscii(argv[i+1], "14x9")) { options->active_format = EMhwlibAF_14x9_centered; } else if (RMCompareAscii(argv[i+1], "4x3_14x9")) { options->active_format = EMhwlibAF_4x3_centered_prot_14x9; } else if (RMCompareAscii(argv[i+1], "16x9_14x9")) { options->active_format = EMhwlibAF_16x9_centered_prot_14x9; } else if (RMCompareAscii(argv[i+1], "16x9_4x3")) { options->active_format = EMhwlibAF_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], "-zoom")) { if (argc > i+4) { RMuint32 x, y, w, h; RMasciiToInt32(argv[i+1], (RMint32*)&x); RMasciiToInt32(argv[i+2], (RMint32*)&y); RMasciiToUInt32(argv[i+3], &w); RMasciiToUInt32(argv[i+4], &h); options->source_window.X = (x >= 4096) ? (x - 4096) : x; options->source_window.Y = (y >= 4096) ? (y - 4096) : y; options->source_window.Width = (w >= 4096) ? (w - 4096) : w; options->source_window.Height = (h >= 4096) ? (h - 4096) : h; options->source_window.XPositionMode = EMhwlibDisplayWindowPositionMode_FrontEdgeToBorder; options->source_window.YPositionMode = EMhwlibDisplayWindowPositionMode_FrontEdgeToBorder; options->source_window.XMode = (x >= 4096) ? EMhwlibDisplayWindowValueMode_Relative : EMhwlibDisplayWindowValueMode_Fixed; options->source_window.YMode = (y >= 4096) ? EMhwlibDisplayWindowValueMode_Relative : EMhwlibDisplayWindowValueMode_Fixed; options->source_window.WidthMode = (w >= 4096) ? EMhwlibDisplayWindowValueMode_Relative : EMhwlibDisplayWindowValueMode_Fixed; options->source_window.HeightMode = (h >= 4096) ? EMhwlibDisplayWindowValueMode_Relative : EMhwlibDisplayWindowValueMode_Fixed; i += 5; err = RM_OK; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-window")) { if (argc > i+4) { RMasciiToInt32(argv[i+1], &(options->output_window.X)); RMasciiToInt32(argv[i+2], &(options->output_window.Y)); RMasciiToUInt32(argv[i+3], &(options->output_window.Width)); RMasciiToUInt32(argv[i+4], &(options->output_window.Height)); options->output_window.XPositionMode = EMhwlibDisplayWindowPositionMode_FrontEdgeToBorder; options->output_window.YPositionMode = EMhwlibDisplayWindowPositionMode_FrontEdgeToBorder; options->output_window.XMode = EMhwlibDisplayWindowValueMode_Fixed; options->output_window.YMode = EMhwlibDisplayWindowValueMode_Fixed; options->output_window.WidthMode = EMhwlibDisplayWindowValueMode_Fixed; options->output_window.HeightMode = EMhwlibDisplayWindowValueMode_Fixed; i += 5; err = RM_OK; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-vscaler")) { if (argc > i+1) { err = RM_OK; if(RMCompareAscii(argv[i+1], "mv") || RMCompareAscii(argv[i+1], "0")) { options->video_scaler = 0; } else if(RMCompareAscii(argv[i+1], "vcr") || RMCompareAscii(argv[i+1], "1")) { options->video_scaler = 1; } else if(RMCompareAscii(argv[i+1], "gfx") || RMCompareAscii(argv[i+1], "2")) { options->video_scaler = 2; } else err = RM_ERROR; i += 2; } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-va") ){ if (argc> i+1) { RMasciiToUInt32(argv[i+1], &options->video_alpha); if (options->video_alpha > 0xFF) err = RM_ERROR; else { i += 2; err = RM_OK; } } else err = RM_ERROR; } else if (RMCompareAscii(argv[i], "-lock_scaler")) { if (argc > i+1) { err = RM_OK; if(RMCompareAscii(argv[i+1], "osd")) { options->lock_scaler = DispOSDScaler; } else if(RMCompareAscii(argv[i+1], "gfx")) { options->lock_scaler = DispGFXMultiScaler; } else if(RMCompareAscii(argv[i+1], "vcr")) { options->lock_scaler = DispVCRMultiScaler; } else if(RMCompareAscii(argv[i+1], "crt")) { options->lock_scaler = DispCRTMultiScaler;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -