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

📄 yuvtorgb.c

📁 ADI的ADSP-BF561下实现多媒体开发的通用框架。
💻 C
字号:
#include <services\services.h>				// system services
#include <drivers\adi_dev.h>				// device manager includes
#include <drivers\ppi\adi_ppi.h>				// PPI driver includes
#include "ppi_L1_ppi_line_transfers.h"
void convertyuvrgb(
	unsigned short OutSize, unsigned long *OutData,
 	unsigned short InSize, u16 *InData)
{
 	unsigned short i,j;
 
 	long r,g,b,r1,g1,b1,cb,cr,y0,y1; 
	u8 *yuv;
	
   InData+=138;
   for (j=0;j<OutSize;j++)
  	{   

    	
 	    yuv = (u8*)(&InData[j]);
  	    y1 = (*(yuv+3)*298)-16;
  	    cr = *(yuv+2)-128;
   	    y0 = (*(yuv+1)*298)-16;
  	    cb = *yuv-128;
  	    
		r = (409*cr);
  	    g = (100*cb + 208*cr);
  	    b = (516*cb);

		r1=y0+r;
		g1=y0-g;
		b1=y0+b;
		
		
  	    if(r1>0xFFFF)  r1 = 255; 
  	    else if(r1<0)  r1 = 0;   	    
    	else r1>>=8;
    
   		if(g1>0xFFFF)  g1 = 255; 
   	 	else if(g1<0)  g1 = 0; 
      	else g1>>=8;
    
    	if(b1>0xFFFF)  b1 = 255; 
    	else if(b1<0)  b1 = 0; 
    	else b1>>=8;
        
  	    //subsampled the Y component /2
       	OutData[j]=
    	
    		((b1<<24) & 0xF8000000)|
    		((g1<<19) & 0x07E00000)|
    		((r1<<13) & 0x001F0000)|
    	   	((b1<<8) & 0x0000F800)|
    		((g1<<3) & 0x000007E0)|
    		((r1>>3) & 0x0000001F);
	}

}

⌨️ 快捷键说明

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