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

📄 parse_display_cmdline.c

📁 SigmDesign SMP8634 media decode chip development SDK
💻 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 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 + -