⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parse_display_cmdline.c

📁 1. 8623L平台
💻 C
📖 第 1 页 / 共 5 页
字号:
/* * * 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 0#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  0x0AAAEBD7D55DAAB8LL// zoom helper defines and functions#undef ZOOM_0#undef ZOOM_1#define ZOOM_0 4096  // 0% zoom position#define ZOOM_1 8192  // 100% zoom positionextern RMbool manutest;static RMstatus apply_outports_videomode(struct dcc_context *dcc_info, struct display_cmdline *options, RMbool hdmi_active);static RMint32 get_window_value(RMuint32 max_val, RMint32 val, enum EMhwlibDisplayWindowValueMode mode){	RMint32 rc = 0;		switch (mode) {	case EMhwlibDisplayWindowValueMode_Fixed:		rc = val;		break;	case EMhwlibDisplayWindowValueMode_Relative:		rc = (RMint32)(val * max_val) / ZOOM_0;		break;	}		return rc;}/*static RMint32 get_window_position(RMuint32 total_size, RMuint32 size, RMint32 pos, enum EMhwlibDisplayWindowPositionMode mode){	RMint32 val = 0;		switch (mode) {	case EMhwlibDisplayWindowPositionMode_FrontEdgeToBorder:		val = pos; 		break;	case EMhwlibDisplayWindowPositionMode_RearEdgeToBorder:		val = total_size - pos - size;		break;	case EMhwlibDisplayWindowPositionMode_FrontEdgeToCenter:		val = pos - size / 2;		break;	case EMhwlibDisplayWindowPositionMode_RearEdgeToCenter:		val = total_size - pos - size / 2;		break;	}			return val;}*/static enum EMhwlibTVStandard GetTVStandardFromName(RMascii *TVStandardName){	// This include compares a 'RMascii *TVStandardName' with the known TVStandards and returns the respective enum.	#include "../emhwlib/include/emhwlib_videoformatnameparse.inc"		return -1;}RMstatus GetTVStandard(RMascii *StandardName, enum EMhwlibTVStandard *Standard){	if (StandardName == NULL)		return RM_ERROR;		*Standard = GetTVStandardFromName(StandardName);		if ((*Standard < 0) || (*Standard == EMhwlibTVStandard_Custom)) {		return RM_ERROR;	}		return RM_OK;}static RMascii *TVStandardName(enum EMhwlibTVStandard TVStandard){	switch (TVStandard) {	// This include contains a 'case' for each 'enum EMhwlibTVStandard' member and returns its name as 'RMascii *'	#include "../emhwlib/include/emhwlib_videoformatnames.inc"	default: return "Unknown";	}}RMstatus GetTVStandardName(enum EMhwlibTVStandard Standard, RMascii **StandardName){	if (StandardName == NULL)		return RM_ERROR;		*StandardName = TVStandardName(Standard);		return RM_OK;}static RMascii *ColorSpaceNames[] = {	"Invalid", 	"None", 	"RGB 16..235", 	"RGB 0..255", 	"YCbCr 601", 	"YCbCr 709", 	"YCbCr 601 0..255", 	"YCbCr 709 0..255", 	"xvYCC 601", 	"xvYCC 709", 	"xvYCC 601 0..255", 	"xvYCC 709 0..255", 	"Unknown"};const RMascii *GetColorSpaceName(enum EMhwlibColorSpace ColorSpace){	switch (ColorSpace) {	case 0: return ColorSpaceNames[0];	case EMhwlibColorSpace_None:            return ColorSpaceNames[1];	case EMhwlibColorSpace_RGB_16_235:      return ColorSpaceNames[2];	case EMhwlibColorSpace_RGB_0_255:       return ColorSpaceNames[3];	case EMhwlibColorSpace_YUV_601:         return ColorSpaceNames[4];	case EMhwlibColorSpace_YUV_709:         return ColorSpaceNames[5];	case EMhwlibColorSpace_YUV_601_0_255:   return ColorSpaceNames[6];	case EMhwlibColorSpace_YUV_709_0_255:   return ColorSpaceNames[7];	case EMhwlibColorSpace_xvYCC_601:       return ColorSpaceNames[8];	case EMhwlibColorSpace_xvYCC_709:       return ColorSpaceNames[9];	case EMhwlibColorSpace_xvYCC_601_0_255: return ColorSpaceNames[10];	case EMhwlibColorSpace_xvYCC_709_0_255: return ColorSpaceNames[11];	default: return ColorSpaceNames[12];	}}#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_Custom;	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->component_size = 8;	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->brightness = 0;	options->hue = 0;	options->contrast = 128;	options->saturation_blue = 128;	options->saturation_red = 128;		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->strip_color.ColorSpace = EMhwlibColorSpace_YUV_601;	options->strip_color.Color.ComponentBitDepth = 8;	options->strip_color.Color.R_Cr = 0x80;	options->strip_color.Color.G_Y  = 0x10;	options->strip_color.Color.B_Cb = 0x80;	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_int = GPIOId_Sys_14;	options->hdmi_cec_part_request = DH_CEC_auto_detect;	options->hdmi_cec_part_found = DH_CEC_no_chip;	options->hdmi_cec_int = GPIOId_Sys_15;	options->hdmi_cec_d = GPIOId_Eth_35;	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->dig_clip_enable = TRUE;	options->dig_clip_range = DispDigitalOut_ClippingLevel_Clip_1_254;	options->dig_color_order = EMhwlibColorOrder_RGB;	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;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -