?? parse_display_cmdline.c
字號:
/* * * Copyright (c) Sigma Designs, Inc. 2005. All rights reserved. * *//** @file parse_display_cmdline.c @brief sample application to access the 86xx chip family @author Christian Wolff*/#include "sample_os.h"#define ALLOW_OS_CODE 1#include "../rua/include/rua.h"#include "../dcc/include/dcc.h"#include "../dcc/include/dcc_macros.h"#include "../rmcore/include/rmstatustostring.h"#include "common.h"#include "outports_options.h"#include "../emhwlib/include/emhwlib_videoformatnames.h"#include "sigma_logo.h"// to enable or disable the debug messages of this source file, put 1 or 0 below#if 1#define LOCALDBG ENABLE#else#define LOCALDBG DISABLE#endif#define SCART_ENABLE_GPIO 13#define SCART_WIDESCREEN_GPIO 14#define NUM_DBC 4 // how many DBCs to allocate// CEA 861-C video mode bitmasks matching certain mode criteria// by frame rate#define CEA861_MASK_24HZ 0x0000000100000000LL#define CEA861_MASK_25HZ 0x0000000200000000LL#define CEA861_MASK_30HZ 0x0000000400000000LL#define CEA861_MASK_50HZ 0x000000E0FFFE0000LL#define CEA861_MASK_60HZ 0x000000180001FFFELL#define CEA861_MASK_100HZ 0x00003F0000000000LL#define CEA861_MASK_120HZ 0x000FC00000000000LL#define CEA861_MASK_200HZ 0x00F0000000000000LL#define CEA861_MASK_240HZ 0x0F00000000000000LL// by nominal resolution#define CEA861_MASK_BASIC 0x0000000087FF00FELL#define CEA861_MASK_VGA 0x0000000000000002LL#define CEA861_MASK_480I 0x0C0C000000003FC0LL#define CEA861_MASK_576I 0x00C030001FE00000LL#define CEA861_MASK_480P 0x030300180000C00CLL#define CEA861_MASK_576P 0x00300C6060060000LL#define CEA861_MASK_720P 0x0000820000080010LL#define CEA861_MASK_1080I 0x0000418000100020LL#define CEA861_MASK_1080P 0x0000000780010000LL#define CEA861_MASK_SD (CEA861_MASK_480I | CEA861_MASK_576I) // 0x0CCC30001FE03FC0LL#define CEA861_MASK_ED (CEA861_MASK_480P | CEA861_MASK_576P) // 0x03330C786006C00CLL#define CEA861_MASK_HD (CEA861_MASK_720P | CEA861_MASK_1080I | CEA861_MASK_1080P)// by aspect ratio#define CEA861_MASK_4x3 0x055514282AA25546LL#define CEA861_MASK_16x9 0x0AAAEBD7D55DAAB8LLextern RMbool manutest;static RMstatus apply_outports_videomode(struct dcc_context *dcc_info, struct display_cmdline *options, RMbool hdmi_active);RMstatus GetTVStandard(RMascii *StandardName, enum EMhwlibTVStandard *Standard){ RMuint32 i; if (StandardName == NULL) return RM_ERROR; for (i=0 ; i<sizeof(TVFormatString)/sizeof(RMuint32) ; i++) { RMuint32 c=0; while (1) { if (StandardName[c] == '\0') { if (TVFormatString[i][c] == '\0') { *Standard = i + 1; return RM_OK; } else break; } if (StandardName[c] != TVFormatString[i][c]) break; c++; } } return RM_ERROR;}RMstatus GetTVStandardName(enum EMhwlibTVStandard Standard, RMascii **StandardName){ if (StandardName == NULL) return RM_ERROR; if (! Standard) { *StandardName = "Custom"; return RM_OK; } Standard--; if ((Standard < 0) || (Standard >= sizeof(TVFormatString) / sizeof(RMuint32))) { *StandardName = "OutOfRange"; return RM_ERROR; } *StandardName = (RMascii *)(TVFormatString[Standard]); return RM_OK;}#define DISP_OPT_MAX_LINE_LENGTH 64RMstatus PrintTVStandardNames(void){ RMuint32 video_format_num; RMuint32 line_length = DISP_OPT_MAX_LINE_LENGTH; for (video_format_num = 0; video_format_num < (sizeof TVFormatString / sizeof TVFormatString[0]); video_format_num++) { RMuint32 next_length = RMasciiLength(TVFormatString[video_format_num]); if (((line_length + next_length) > DISP_OPT_MAX_LINE_LENGTH) && (line_length != 0)) { fprintf(stderr, "\n\t\t"); line_length = 0; } fprintf(stderr, "%s ", TVFormatString[video_format_num]); line_length += (next_length + 1); } return RM_OK;}RMstatus init_display_options(struct display_cmdline *options){ RMuint32 i; RMMemset(options, 0, sizeof(struct display_cmdline)); options->configure_outports = TRUE; options->standard = EMhwlibTVStandard_NTSC_M; options->sd_standard = EMhwlibTVStandard_Custom; options->sd_standard_50Hz = EMhwlibTVStandard_PAL_BG; // PAL_N? options->sd_standard_60Hz = EMhwlibTVStandard_NTSC_M; // NTSC_M_Japan? PAL_M? options->use_hdsd_conversion = FALSE; options->sd_component = FALSE; options->sd_cav_1080p = FALSE; options->allow_otf = TRUE; options->allow_buf = TRUE; options->sd_autodetect = FALSE; options->vidmode_filename[0] = '\0'; options->vga_standard = EMhwlibTVStandard_Custom; options->connector = DCCVideoConnector_SVIDEO; options->component = EMhwlibComponentMode_YUV_SMPTE; options->color_space = EMhwlibColorSpace_YUV_601; options->mixer_color_space = EMhwlibColorSpace_None; options->bus_size = 24; options->ar_x = 4; options->ar_y = 3; options->active_format_valid = FALSE; options->active_format = EMhwlibAF_same_as_picture; options->sd_ar_x = 4; options->sd_ar_y = 3; options->sd_active_format_valid = FALSE; options->sd_active_format = EMhwlibAF_same_as_picture; options->target_ar_x = 0; options->target_ar_y = 0; options->force_route = FALSE; options->route = DCCRoute_Main; set_default_out_window(&(options->source_window)); set_default_out_window(&(options->output_window)); options->dump_osd_dir = NULL; options->show_hwc = FALSE; options->nonlinearmode.Width = 0; options->nonlinearmode.Level = 0; options->blackstrip.Horizontal = 4096; options->blackstrip.Vertical = 4096; options->cutstrip.Horizontal = 4096; options->cutstrip.Vertical = 4096; options->scalingmode = EMhwlibScalingMode_LetterBox; options->deinterlacingmode = EMhwlibDeinterlacingMode_Discard_Bob; options->luma_key.LumaMin = 0xff; options->luma_key.LumaMax = 0x00; options->do_pulldown = FALSE; options->lock_scaler = 0; options->deinterlacing_motion_config.Value0 = 0x00; options->deinterlacing_motion_config.Value8 = 0x04; options->deinterlacing_motion_config.Value16 = 0x40; options->deinterlacing_motion_config.Value32 = 0xC0; options->deinterlacing_proportion.ExistingLineProportion = 4; options->deinterlacing_proportion.NewLineProportion = 12; options->color_degradation_boundary = 0; options->agc_level = 0; options->agc_version = (RMuint32)EMhwlibAGCVersion_ConstantBPP; options->aps_level = 0; options->rcd = 0; options->asb = 0; options->cgmsa = 0; options->component_order = EMhwlibComponentOrder_RGB; options->field_selection = EMhwlibScalerFieldSelection_BestFieldType; options->dh_info = NULL; options->dh_first_run = FALSE; options->dvi_hdmi_part = DH_auto_detect; options->dvi_hdmi_state = DH_uninitialized; options->dvi_hdmi_hdcp = FALSE; options->dvi_hdmi_display_edid = FALSE; options->edid_sel = DH_EDID_none; options->vga_edid_sel = DH_EDID_none; options->dvi_hdmi_edid_descriptor = 0; options->dvi_hdmi_edid_vfreq = 59; options->dvi_hdmi_edid_hsize = 1920; options->dvi_hdmi_edid_vsize = 1080; options->dvi_hdmi_edid_intl = TRUE; options->hdmi_monitor = FALSE; options->hdmi_force = FALSE; options->hdmi_de = FALSE; options->edid_exclude_mask = 0; options->edid_exclude_mask_vfreq = 0; options->edid_exclude_mask_asp = 0; options->edid_force_mask = 0; options->edid_force_mask_vfreq = 0; options->edid_force_mask_asp = 0; options->edid_max_pixclk = 0; options->edid_min_pixclk = 0; options->edid_max_hfreq = 0; options->edid_min_hfreq = 0; options->edid_max_vfreq = 0; options->edid_min_vfreq = 0; options->dvi_hdmi_edid_write = FALSE; options->dvi_hdmi_edid_read = FALSE; options->dvi_hdmi_edid_override = FALSE; options->dvi_hdmi_edid_file = NULL; options->init_mode = DCCInitMode_LeaveDisplay; options->dig_protocol = EMhwlibDigitalTimingSignal_601; options->dig_force_doublerate = FALSE; options->dig_doublerate = FALSE; options->dig_clk_normal = FALSE; options->dig_ddr = FALSE; options->dig_inv_cap_clk = FALSE; options->dig_delay = 2300; options->dig_force_delay = FALSE; options->dig_vsync_delay = FALSE; options->dig_trailing_edge = FALSE; options->chroma_sync = FALSE; options->scart_enable = FALSE; options->scart_en_pio = 0; options->scart_widescreen = FALSE; options->scart_ws_pio = 0; options->i2c_module = 1; options->i2c_speed = 0; // don't force options->i2c_ddc_on_tx = FALSE; options->dvi_reset_gpio = 0; // no GPIO used to reset DVI chip options->video_scaler = 0; options->video_alpha = 0x80; options->hdmi_active_format_valid = FALSE; options->hdmi_active_format = DH_af_same_as_picture; options->hdmi_bar_top = 0; options->hdmi_bar_bottom = 4096; options->hdmi_bar_left = 0; options->hdmi_bar_right = 4096; options->hdmi_scan = EMhwlibScanInfo_NoData; options->hdmi_spd_vendor = NULL; options->hdmi_spd_product = NULL; options->hdmi_spd_class = DH_source_dev_unknown; options->tmds_threshold = 0; options->tmds_gpio = 0; options->filter_gpio_start = 0; options->filter_gpio_num = 0; options->filter_gpio_val = 0; options->genlock_input = 0; options->genlock_min = 0; options->genlock_max = 0; options->input = 0; options->input_videosource = NULL; options->input_mode = EMhwlibTVStandard_Custom; options->input_timingsignal = EMhwlibDigitalTimingSignal_656; options->input_vvld = FALSE; options->input_bussize = 8; options->input_invv = FALSE; options->input_invh = FALSE; options->input_usev2 = FALSE; options->input_interlaced = TRUE; options->time_interval.Mode = EMhwlibDisplayIntervalMode_None; for (i = 0; i < 2; i++) { options->osd_pictures[i].enable = FALSE; options->osd_pictures[i].filename = NULL; options->osd_pictures[i].alpha_merge = FALSE; options->osd_pictures[i].alpha_filename = NULL; options->osd_pictures[i].dramblock = 0; options->osd_pictures[i].alpha = 128; options->osd_pictures[i].scaler = 0; options->osd_pictures[i].zoom = FALSE; options->osd_pictures[i].color_space = EMhwlibColorSpace_None; options->osd_pictures[i].orientation = FRTop_FCLeft; options->osd_pictures[i].nonlinearmode.Width = 0; options->osd_pictures[i].nonlinearmode.Level = 0; options->osd_pictures[i].blackstrip.Horizontal = 4096; options->osd_pictures[i].blackstrip.Vertical = 4096; options->osd_pictures[i].cutstrip.Horizontal = 0; options->osd_pictures[i].cutstrip.Vertical = 0; set_default_out_window(&(options->osd_pictures[i].source_window)); set_default_out_window(&(options->osd_pictures[i].output_window)); } options->force_DACCompDisable = FALSE; options->DACCompDisable = FALSE; options->force_DACDisable = FALSE; options->DACDisable.DAC1SVideoY = FALSE; options->DACDisable.DAC2SVideoC = FALSE; options->DACDisable.DAC3CVBS = FALSE; options->DACDisable.DAC4Y = FALSE; options->DACDisable.DAC5Cb = FALSE; options->DACDisable.DAC6Cr = FALSE; options->force_LumaChromaDelay = FALSE; options->LumaChromaDelay = EMhwlibLumaChromaDelay_NoDelay; options->force_TripleCVBS = FALSE; options->TripleCVBS = FALSE; options->force_LineCrop = FALSE; options->LineCrop.CropLeftPos = 0; options->LineCrop.CropRightPos = 4095; options->LineCrop.ColorSpace = options->color_space; options->LineCrop.CropControl = FALSE; options->gamma_table = 0; options->disable_pixel_timer = FALSE; options->hdmi_convert = FALSE; options->hdmi_color_space = EMhwlibColorSpace_None; options->hdmi_sampling_mode = EMhwlibSamplingMode_444; options->hdmi_component_depth = 8; options->downscalingmode.Discard = FALSE; options->downscalingmode.FilterBoundary[0] = 384; options->downscalingmode.FilterBoundary[1] = 256; options->downscalingmode.FilterBoundary[2] = 128; options->filtermode.Boundary_0_1 = 0x1400; options->filtermode.Boundary_1_2 = 0x1c00; options->filtermode.Boundary_2_3 = 0x2c00; return RM_OK;}void show_display_options(void){ fprintf(stderr, "DISPLAY OPTIONS (default values inside brackets)\n"
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -