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

📄 _csl_prevgetoutsize.c

📁 TI达芬奇dm644x各硬件模块测试代码
💻 C
字号:
/** @file _csl_prevGetOutSize.c
 *
 *  @brief    File for functional layer of CSL API @a CSL_prevGetOutSize()
 *
 *  Description
 *    - The @a CSL_prevGetOutSize() function definition & it's associated
 *      functions
 *
 *  @date 11th May, 2005
 *  @author Jesse Villarreal.
 */

#include <csl_prev_aux.h>

#pragma CODE_SECTION (CSL_prevGetOutSize, ".text:csl_section:prev");

/** @brief	This function calculates the output width and height of the 
 *			output of the preview engine.  Since this function bases its
 *			calculations on register values, this should be called after 
 *			all other settings have been set except the preview enable.
 */
CSL_Status  CSL_prevGetOutSize(
    /** Pointer to the object that holds reference to the
     *  instance of PREV requested after the call 
	 */
    CSL_PrevHandle                         hPrev,
    /** Returns the response
	 */
    CSL_PrevOutSizeData					   *response
	){

/** As per the spec, the following table outlines how many pixels/lines
	are subtracted from the output of the input averager depending on which 
	modes are on:
	
	Function ON						Pix/line	Lines
	---------------------------------------------------
	Horizontal Median Filter		4			0
	Noise Filter					4			4
	CFA (bayer, Fuji, or Sony)		4			4
	CFA (Foveon or 2x dnsamp)		0			2
	"Color Suppression OR 
	Luminance Enhancement"			2			0
	---------------------------------------------------
	Maximum Total					14			8
 */

	Uint16 width, height;
	CSL_PrevRegsOvly prevRegs =  hPrev->regs; 

	width =		CSL_FEXT(prevRegs->HORZ_INFO, PREV_HORZ_INFO_EPH) -
				CSL_FEXT(prevRegs->HORZ_INFO, PREV_HORZ_INFO_SPH) + 1;

	height =	CSL_FEXT(prevRegs->VERT_INFO, PREV_VERT_INFO_ELV) -
				CSL_FEXT(prevRegs->VERT_INFO, PREV_VERT_INFO_SLV) + 1;

	// Divide the width (by right shifting) by the number of averaged pixels
	width >>= CSL_FEXT(prevRegs->AVE, PREV_AVE_COUNT);

	if(CSL_FEXT(prevRegs->PCR, PREV_PCR_HMEDEN) == CSL_PREV_HMED_ENABLE)
		width -= 4;

	if(CSL_FEXT(prevRegs->PCR, PREV_PCR_NFEN) == CSL_PREV_NF_ENABLE) {
		width -= 4;
		height -= 4;
	}

	if(CSL_FEXT(prevRegs->PCR, PREV_PCR_CFAEN) == CSL_PREV_CFA_ENABLE) {
		Uint16 cfa;
		cfa = CSL_FEXT(prevRegs->PCR, PREV_PCR_CFAFMT);

		switch(cfa) {

			case CSL_PREV_CFAFMT_CONV_BAYER:
			case CSL_PREV_CFAFMT_SONY_VGAMODE:
			case CSL_PREV_CFAFMT_FUJI_HONEYCOMB:
				width -= 4;
				height -= 4;
				break;

			case CSL_PREV_CFAFMT_RGBFOVEON_BYPASSCFA:
			case CSL_PREV_CFAFMT_V_AND_H_2X_DNSAMPLE:
			case CSL_PREV_CFAFMT_RRRGGGBBBFOVEON:
				height -= 2;
				break;

			default:
				return (CSL_ESYS_INVPARAMS);
		}
	}

	if(	CSL_FEXT(prevRegs->PCR, PREV_PCR_SUPEN) == CSL_PREV_SUP_ENABLE			||
		CSL_FEXT(prevRegs->PCR, PREV_PCR_YNENHEN) == CSL_PREV_NL_YENH_ENABLE
	  )
		width -= 2;

	response->width = width;
	response->height = height;

    return (CSL_SOK);
}

⌨️ 快捷键说明

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