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

📄 main.c

📁 基于TI公司tms320c6711 dsk板的一个图像处理的小程序。
💻 C
字号:
/* ======================================================================== */
/*   TEXAS INSTRUMENTS, INC.                                                */
/*                                                                          */
/*   PROJECT NAME                                                           */
/*       wave_horz -- TMS320C6000 Cache User's Guide                        */
/*                                                                          */
/*   PLATFORM                                                               */
/*       C621x/C671x                                                        */
/*                                                                          */
/*   DESCRIPTION                                                            */
/*       Example code for section "Processing Chain with DMA Buffering"     */
/*       (requires C62x IMGLIB to be installed).                            */
/*                                                                          */
/* ------------------------------------------------------------------------ */
/*             Copyright (c) 2003 Texas Instruments, Incorporated.          */
/*                            All Rights Reserved.                          */
/* ======================================================================== */

#include <stdlib.h>
#include <csl.h>
#include <csl_dat.h>
#include "IMG_pix_expand.h"
 
#include "IMG_wave_horz.h" 
#include "IMG_pix_sat.h"

#define CACHE_L1D_LINESIZE 32

#pragma DATA_ALIGN(qmf, 4);
#pragma DATA_ALIGN(mqmf, 4);
#pragma DATA_ALIGN(InBuffA, 4);
#pragma DATA_ALIGN(InBuffB, 4);

#define COLS   256              /* 256 cols in image */
#define ROWS   256              /* 256 rows in image */
#define IMSIZE 65536            /* Image size */

/* ------------------------------------------------------------------------ */
/*  Input image                                                             */
/* ------------------------------------------------------------------------ */
extern unsigned char in_image_ext[IMSIZE]; 

/* ------------------------------------------------------------------------ */
/*  Final output image                                                      */
/* ------------------------------------------------------------------------ */
#pragma DATA_SECTION(out_image_ext,".external")
unsigned char out_image_ext[IMSIZE]; 

/* ------------------------------------------------------------------------ */
/*  Buffers to be kept in L1D                                               */
/*  512 pixels x (4 char buffers + 2 short buffers) = cache size            */
/* ------------------------------------------------------------------------ */
#define PIXELS 256  
#pragma DATA_SECTION(InBuffA,       ".buffers")
#pragma DATA_SECTION(InBuffB,       ".buffers")
#pragma DATA_SECTION(pix_expand_out,".buffers")
#pragma DATA_SECTION(wave_horz_out, ".buffers")
#pragma DATA_SECTION(OutBuffA,      ".buffers")
#pragma DATA_SECTION(OutBuffB,      ".buffers")
#pragma DATA_ALIGN(InBuffA, CACHE_L1D_LINESIZE);

#pragma DATA_ALIGN(pix_expand_out, 4);
#pragma DATA_ALIGN(OutBuffA, 4);
#pragma DATA_ALIGN(OutBuffB, 4);


unsigned char InBuffA       [PIXELS];
unsigned char OutBuffA      [PIXELS]; 
unsigned char InBuffB       [PIXELS];  
unsigned char OutBuffB      [PIXELS];
short         pix_expand_out[PIXELS];
short         wave_horz_out [PIXELS];
  


/* ------------------------------------------------------------------------ */
/*  Daubechies-4 filter coefficients (Q.15)                                 */
/* ------------------------------------------------------------------------ */
short qmf [8] = {-347, 1078, 1009, -6128, -918, 20673, 23423, 7550}; 
short mqmf[8] = {-7550, 23423, -20673, -918, 6128, 1009, -1078, -347}; 
                  

void main()
{
     
     /* -------------------------------------------------------------------- */
  	 /*  DMA Transfer IDs 												  	 */
	 /* -------------------------------------------------------------------- */
	 
	 Uint32	id_InBuffA  = DAT_XFRID_WAITNONE,
		   	id_InBuffB  = DAT_XFRID_WAITNONE,
	   		id_OutBuffA = DAT_XFRID_WAITNONE,
	   		id_OutBuffB = DAT_XFRID_WAITNONE;

     int i;
     
	 /* -------------------------------------------------------------------- */
     /*  Initialize Chip Support Library                                     */
	 /* -------------------------------------------------------------------- */
     CSL_init();
     
	 /* -------------------------------------------------------------------- */
     /*  Open DAT module using any DMA channel                               */
	 /* -------------------------------------------------------------------- */
     DAT_open(DAT_CHAANY, DAT_PRI_HIGH, 0);
     
     /* -------------------------------------------------------------------- */
  	 /*	Initially, fill buffer InBuffA and InBuffB.                          */
     /* -------------------------------------------------------------------- */
//  	 id_InBuffA = DAT_copy(in_image_ext,        InBuffA, PIXELS);
//	 id_InBuffB = DAT_copy(in_image_ext+PIXELS, InBuffB, PIXELS);
  		
  	 for (i=0; i< ROWS ; i+=1)
  	 {
 	 	/* ----------------------------------------------------------------- */
		/*	Wait for A buffers                                               */
		/* ----------------------------------------------------------------- */
		
		id_InBuffA = DAT_copy(in_image_ext+(i*PIXELS),        InBuffA, PIXELS);
		DAT_wait(id_InBuffA); 
//		DAT_wait(id_OutBuffA); 
		
 	 	/* ----------------------------------------------------------------- */
		/*  1. Expand pixels to 16-bit                                       */
		/*  2. Perform horizontal wavelet                                    */
		/*  3. Saturate 16-bit output to 8-bit pixel.                        */
 	 	/* ----------------------------------------------------------------- */
     IMG_pix_expand(PIXELS, InBuffA, pix_expand_out);
     IMG_wave_horz (pix_expand_out,      qmf, mqmf, wave_horz_out,      COLS);
//	 IMG_wave_horz (pix_expand_out+COLS, qmf, mqmf, wave_horz_out+COLS, COLS);
	 IMG_pix_sat   (PIXELS, wave_horz_out, InBuffA);        
     
//     IMG_pix_sat   (PIXELS, pix_expand_out, OutBuffA);
 	 	/* ----------------------------------------------------------------- */
	  	/*  Transfer OutBuffA to out_image_ext. Transfer new image data to   */
	  	/*  InBuffA.                                                         */
 	 	/* ----------------------------------------------------------------- */
  		id_InBuffA = DAT_copy(InBuffA, out_image_ext+(i*PIXELS),   PIXELS);
        DAT_wait(id_InBuffA); 
//		id_InBuffA  = DAT_copy(in_image_ext+((i+2)*PIXELS), InBuffA, PIXELS);
  	//	DAT_wait(id_InBuffA);
 	 	/* ----------------------------------------------------------------- */
		/*	Now the same for the B buffers                                   */
		/* ----------------------------------------------------------------- */
//		DAT_wait(id_InBuffB); 
//		DAT_wait(id_OutBuffB); 

//        IMG_pix_expand(PIXELS, InBuffB, pix_expand_out);
//     IMG_wave_horz (pix_expand_out,      qmf, mqmf, wave_horz_out,      COLS);
//	 IMG_wave_horz (pix_expand_out+COLS, qmf, mqmf, wave_horz_out+COLS, COLS);
//	 IMG_pix_sat   (PIXELS, wave_horz_out, OutBuffB);        
 // 	  IMG_pix_sat   (PIXELS, pix_expand_out, OutBuffB); 	
  	   	       
  		
//  		id_OutBuffB = DAT_copy(OutBuffB, out_image_ext+((i+1)*PIXELS), PIXELS);
//		id_InBuffB  = DAT_copy(in_image_ext+((i+3)*PIXELS), InBuffA,   PIXELS);
  	 }

	 /* -------------------------------------------------------------------- */
  	 /*	Complete the last two buffers without copying new data into InBuffA  */
  	 /* and InBuffB.											    		 */
	 /* -------------------------------------------------------------------- */
//	 DAT_wait(id_InBuffA); 
//	 DAT_wait(id_OutBuffA); 
		
//    IMG_wave_horz (pix_expand_out,      qmf, mqmf, wave_horz_out,      COLS);
//	 IMG_wave_horz (pix_expand_out+COLS, qmf, mqmf, wave_horz_out+COLS, COLS);
//	 IMG_pix_sat   (PIXELS, wave_horz_out, OutBuffA);        
     
 
//     id_OutBuffA = DAT_copy(OutBuffA, out_image_ext+(i*PIXELS),   PIXELS);
  		
//	 DAT_wait(id_InBuffB); 
//	 DAT_wait(id_OutBuffB); 
	
//     IMG_pix_expand(PIXELS, InBuffB, pix_expand_out);
//     IMG_wave_horz (pix_expand_out,      qmf, mqmf, wave_horz_out,      COLS);
//	 IMG_wave_horz (pix_expand_out+COLS, qmf, mqmf, wave_horz_out+COLS, COLS);
//	 IMG_pix_sat   (PIXELS, wave_horz_out, OutBuffB);        
  
  	   	
//     id_OutBuffB = DAT_copy(OutBuffB, out_image_ext+((i+1)*PIXELS), PIXELS);
     DAT_close();
     exit(0);
           	  
}

/*-------Image Graph Options-----------------------------*		
Display type                         => Image
Color Space                          => RGB
Interleaved Data Sources             => Yes
Start Address -R Source              => out_image
Lines Per Display                    => 256
Pixels Per Line                      => 256
Byte Packing to fill 32 Bits         => No
Bits Per Pixel                       => 8 (256 Color Palette)
Palette Option                       => Gray Scale of 256 Colors
Image Origin                         => Top Left
Status Bar Display                   => On
Cursor Mode                          => Data Cursor	
------------------------------------------------------  */


/* ======================================================================== */
/*             Copyright (c) 2003 Texas Instruments, Incorporated.          */
/*                            All Rights Reserved.                          */
/* ======================================================================== */



 

⌨️ 快捷键说明

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