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

📄 imxlib.c

📁 可以了解TI的DSP iMX的用法。适用DSP54X
💻 C
字号:
/*****************************************************************************
  Project:     TI iMX Library 
  -----------------------------
  File:        imxlib.c
  Description: high level iMX functions for image processing
               these routines enocde, start the execution and wait for
               completion

  Created:  07/29/1999, Ching-Yu Hung, Deepu Talla
  Copyright 1999, Texas Instruments                                         
  ------------------------------------------------------------
  Version:
  $Id: imxlib.c,v 1.2 1999/10/18 20:17:05 hung Exp $
          
  History:
  $Log: imxlib.c,v $
  Revision 1.2  1999/10/18 20:17:05  hung
  Cleaned up argument names and orders.  Added a few functions.

  Revision 1.1  1999/10/13 05:04:05  illgner
  Initial revision


 *****************************************************************************/

#include "imx.h"        

void imxenc_yshift
(
   short *input_ptr,
   short *coeff_ptr,
   short *output_ptr,
   short y_width,
   short y_height,
   short *cmdptr
)
{
   short lpend1, lpend2, lpend3, lpend4;
   short data_inc1, data_inc2, data_inc3, data_inc4;
   short data_inc_mask1, data_inc_mask2, data_inc_mask3;
   short coef_inc1, coef_inc2, coef_inc3, coef_inc4;
   short coef_inc_mask1, coef_inc_mask2, coef_inc_mask3;
   short outp_inc1, outp_inc2, outp_inc3, outp_inc4;
   short outp_inc_mask1, outp_inc_mask2, outp_inc_mask3;
   short dpoints, cpoints, opoints;
   short acclp, acc_mode;
   short operation = 0;

   short round_shift = 0;

   /* Y Left shift 8bits */
   lpend1 = 0;
   lpend2 = 0;   
   lpend3 = y_height - 1;
   lpend4 = y_width / 4 - 1;
 
   data_inc4 = 0;
   data_inc3 = 0;
   data_inc2 = 8;
   data_inc1 = 8;

   data_inc_mask1 = 1;
   data_inc_mask2 = 0;
   data_inc_mask3 = 0;

   coef_inc4 = 0;
   coef_inc3 = 0;
   coef_inc2 = 0;	
   coef_inc1 = 0;	
   coef_inc_mask1 = 0;
   coef_inc_mask2 = 0;
   coef_inc_mask3 = 0;
 
   outp_inc4 = 0;
   outp_inc3 = 0;
   outp_inc2 = 8;
   outp_inc1 = 8; 

   outp_inc_mask3 = 0;
   outp_inc_mask2 = 0;
   outp_inc_mask1 = 1;
 
   acclp = 3;
   acc_mode = 0;
 
   dpoints = 4;
   cpoints = 1;
   opoints = 4;

   imx_sim( acc_mode, operation,
		 lpend1, lpend2, lpend3, lpend4,
		 input_ptr, coeff_ptr, output_ptr,
		 data_inc1, data_inc2, data_inc3, data_inc4,
		 data_inc_mask1, data_inc_mask2, data_inc_mask3,
		 coef_inc1, coef_inc2, coef_inc3, coef_inc4,
		 coef_inc_mask1, coef_inc_mask2, coef_inc_mask3,
		 outp_inc1, outp_inc2, outp_inc3, outp_inc4,
		 outp_inc_mask1, outp_inc_mask2, outp_inc_mask3,
		 dpoints, cpoints, opoints,
		 iMXTYPE_SHORT, iMXTYPE_SHORT, iMXTYPE_SHORT, 
		 acclp, round_shift, 0, cmdptr);
}

void imxenc_uvadd2y
(
   short *input_ptr,
   short *coeff_ptr,
   short *output_ptr,
   short uv_width,
   short uv_height,
   short *cmdptr
)
{
   short lpend1, lpend2, lpend3, lpend4;
   short data_inc1, data_inc2, data_inc3, data_inc4;
   short data_inc_mask1, data_inc_mask2, data_inc_mask3;
   short coef_inc1, coef_inc2, coef_inc3, coef_inc4;
   short coef_inc_mask1, coef_inc_mask2, coef_inc_mask3;
   short outp_inc1, outp_inc2, outp_inc3, outp_inc4;
   short outp_inc_mask1, outp_inc_mask2, outp_inc_mask3;
   short dpoints, cpoints, opoints;
   short acclp, acc_mode;
   short operation = 2;

   short round_shift = 0;

   /* Y Left shift 8bits */
   lpend1 = 0;
   lpend2 = 2;
   lpend3 = uv_height - 1;
   lpend4 = uv_width - 1;

   data_inc4 = 0;
   data_inc3 = 4;
   data_inc2 = 4;
   data_inc1 = -uv_height * uv_width * 4 + 6;

   data_inc_mask1 = 3;
   data_inc_mask2 = 1;
   data_inc_mask3 = 0;

   coef_inc4 = 0;
   coef_inc3 = 2;
   coef_inc2 = 2;
   coef_inc1 = 2;
   coef_inc_mask1 = 3;
   coef_inc_mask2 = 1;
   coef_inc_mask3 = 0;
 
   outp_inc4 = 0;
   outp_inc3 = 4;
   outp_inc2 = 4;
   outp_inc1 = -uv_height * uv_width * 4 + 6;

   outp_inc_mask3 = 0;
   outp_inc_mask2 = 1;
   outp_inc_mask1 = 3;
 
   acclp = 3;
   acc_mode = 0;
 
   dpoints = 1;
   cpoints = 1;		
   opoints = 1;

   imx_sim( acc_mode, operation,
		 lpend1, lpend2, lpend3, lpend4,
		 input_ptr, coeff_ptr, output_ptr,
		 data_inc1, data_inc2, data_inc3, data_inc4,
		 data_inc_mask1, data_inc_mask2, data_inc_mask3,
		 coef_inc1, coef_inc2, coef_inc3, coef_inc4,
		 coef_inc_mask1, coef_inc_mask2, coef_inc_mask3,
		 outp_inc1, outp_inc2, outp_inc3, outp_inc4,
		 outp_inc_mask1, outp_inc_mask2, outp_inc_mask3,
		 dpoints, cpoints, opoints,
		 iMXTYPE_SHORT, iMXTYPE_SHORT, iMXTYPE_SHORT, 
		 acclp, round_shift, 0, cmdptr);
}

void imxenc_yyuv2yuyv
(
	short *input_ptr,
	short *u_ptr,
	short *v_ptr,
	short *coeff_ptr,
	short *output_ptr,
	short y_width,
	short y_height,
	short uv_width,
	short uv_height,
	short *cmdptr
)
{
	imxenc_yshift(input_ptr, coeff_ptr, output_ptr, y_width, y_height, cmdptr);

	imxenc_uvadd2y(input_ptr, u_ptr, output_ptr, uv_width, uv_height, cmdptr);

	imxenc_uvadd2y(input_ptr + 1, v_ptr, output_ptr + 1, uv_width, uv_height, cmdptr);

	return;
}



void imxenc_reshape
(
	short *input_yptr,
	short *input_uvptr,
	short *coeff_ptr,
	short *output_ptr,
	short input_ywidth,
	short input_yheight,
	short input_uvwidth,
	short input_uvheight,
	short output_width,
	short output_height,
	short round_shift,
	short *cmdptr
)
{
	short lpend1, lpend2, lpend3, lpend4;
	short data_inc1, data_inc2, data_inc3, data_inc4;
	short data_inc_mask1, data_inc_mask2, data_inc_mask3;
	short coef_inc1, coef_inc2, coef_inc3, coef_inc4;
	short coef_inc_mask1, coef_inc_mask2, coef_inc_mask3;
	short outp_inc1, outp_inc2, outp_inc3, outp_inc4;
	short outp_inc_mask1, outp_inc_mask2, outp_inc_mask3;
	short dpoints, cpoints, opoints;
	short acclp, acc_mode;
	short operation = 0;

	short cmdlen = 0;

	lpend1 = 0;
	lpend2 = 0;
	lpend3 = output_height - 1;
	lpend4 = output_width / 2 - 1;

	data_inc4 = 0;
	data_inc3 = 0;
	data_inc2 = 4;
	data_inc1 = 2 * (input_ywidth - output_width) + 4;

	data_inc_mask1 = 1;
	data_inc_mask2 = 0;
	data_inc_mask3 = 0;

	coef_inc4 = 0;
	coef_inc3 = 0;
	coef_inc2 = 0;	
	coef_inc1 = 0;	
	coef_inc_mask1 = 0;
	coef_inc_mask2 = 0;
	coef_inc_mask3 = 0;

	outp_inc4 = 0;
	outp_inc3 = 0;
	outp_inc2 = 4;
	outp_inc1 = 4;

	outp_inc_mask3 = 0;
	outp_inc_mask2 = 0;
	outp_inc_mask1 = 1;

	acclp = 3;
	acc_mode = 0;

	dpoints = 2;
	cpoints = 1;
	opoints = 2;

	imx_sim(
		acc_mode, operation,
		lpend1, lpend2, lpend3, lpend4,
		input_yptr, coeff_ptr, output_ptr,
		data_inc1, data_inc2, data_inc3, data_inc4,
		data_inc_mask1, data_inc_mask2, data_inc_mask3,
		coef_inc1, coef_inc2, coef_inc3, coef_inc4,
		coef_inc_mask1, coef_inc_mask2, coef_inc_mask3,
		outp_inc1, outp_inc2, outp_inc3, outp_inc4,
		outp_inc_mask1, outp_inc_mask2, outp_inc_mask3,
		dpoints, cpoints, opoints,
		iMXTYPE_SHORT, iMXTYPE_SHORT, iMXTYPE_SHORT,
		acclp, round_shift, 0, cmdptr);

	lpend1 = 0;
	lpend2 = 1;
	lpend3 = output_height - 1;
	lpend4 = output_width / 2 - 1;

	data_inc4 = 0;
	data_inc3 = 4;
	data_inc2 = 2 * (input_uvwidth - output_width) + 4;
	data_inc1 = 2 * input_uvwidth * (input_uvheight - output_height + 1) - 2 * output_width + 4;

	data_inc_mask1 = 3;
	data_inc_mask2 = 1;
	data_inc_mask3 = 0;

	outp_inc4 = 0;
	outp_inc3 = 0;
	outp_inc2 = 4;
	outp_inc1 = 4;

	outp_inc_mask3 = 0;
	outp_inc_mask2 = 0;
	outp_inc_mask1 = 1;

	output_ptr += output_width * output_height;

	operation = 2;
	cpoints = 4;
	round_shift = 0;

	imx_sim(
		acc_mode, operation,
		lpend1, lpend2, lpend3, lpend4,
		input_uvptr, coeff_ptr, output_ptr,
		data_inc1, data_inc2, data_inc3, data_inc4,
		data_inc_mask1, data_inc_mask2, data_inc_mask3,
		coef_inc1, coef_inc2, coef_inc3, coef_inc4,
		coef_inc_mask1, coef_inc_mask2, coef_inc_mask3,
		outp_inc1, outp_inc2, outp_inc3, outp_inc4,
		outp_inc_mask1, outp_inc_mask2, outp_inc_mask3,
		dpoints, cpoints, opoints,
		iMXTYPE_SHORT, iMXTYPE_SHORT, iMXTYPE_SHORT,
		acclp, round_shift, 0, cmdptr);

	return;
}

⌨️ 快捷键说明

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