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

📄 tskprocess.c

📁 TI公司C6000系列DSP(DM642)模拟视频采集与回显源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
	 	     bufs = pMsgBuf->bufChannel;
			 frame[0] = (char *)bufs[0];				
			 frame[1] = (char *)bufs[1];				
			 frame[2] = (char *)bufs[2];
	 	     
	 	     for( chanNum = 0; chanNum < PROCESSNUMCHANNELS; chanNum++ ) 
	 	     {
	
	            CHAN_Handle chanHandle = &thrProcess.chanList[ chanNum ];
	
		    	/*----------------------------------------------------------*/
    	    	/* Set the input ICC buffer for MPEG2ENC cell for each channel*/
        		/*----------------------------------------------------------*/
	            ICC_setBuf(chanHandle->cellSet[CELLMPEG2ENC].inputIcc[0],
	                       frame, 
	                       sizeof(unsigned char*)*3);
	        	            
    
	            /*----------------------------------------------------------*/
	            // Set the output ICC buffer for MPEG-2 decoder
	            /*----------------------------------------------------------*/
	             out[1] = (int *) &out_para[0];
				 out[2] = (int *) &frame_all_storage[0];
																												
			   	 ICC_setBuf(chanHandle->cellSet[CELLMPEG2DEC].outputIcc[0],
		                   &out, 
		                   sizeof(unsigned char*)*3);
	            	            
	            /*----------------------------------------------------------*/
	            // execute the channel 
	            /*----------------------------------------------------------*/
	            UTL_stsStart( stsTime1 );  // start the stopwatch
	             rc = CHAN_execute( chanHandle, frameIdx );
	            UTL_assert( rc == TRUE );
	            UTL_stsStop( stsTime1 );   // elapsed time goes to this STS 	            
	        }
	   		
	   		decode_out = (DECODE_OUT *)(out[1]);
		         
		    

#ifdef INPUT_2_OUTPUT
			decode_out->outputing = 1;
			decode_out->outframe[0]	=  frame[0];
			decode_out->outframe[1]	=  frame[1];
			decode_out->outframe[2]	=  frame[2];
#endif
			
			/*-----------------------------------------------------------*/
	   		/* Send message to output task with pointers to decoded frame*/
   			/*-----------------------------------------------------------*/
		    thrProcess.scomMsgTx.status = decode_out->outputing ;
	   		thrProcess.scomMsgTx.bufChannel=&(decode_out->outframe);
	   		SCOM_putMsg(fromProctoOut,&(thrProcess.scomMsgTx));	   		
 		}
 		 frameIdx ++;
		 if(mpeg2encParams.h_nframes == frameIdx)
 	     {
		   	 frameIdx = 0;
	     }
	 }	                                                 
}


/*----------------------------------------------------------*/
/* Function : readparamfile                                 */
/* Reads the encoder paramters from input parameter file    */
/* The function also validates the read parameters          */
/*----------------------------------------------------------*/
void readparamfile(char *fname,IMPEG2VENC_Params *mpeg2veparam)
{
  int i;
  int v;
  FILE *fd;
  char line[256];

  fd = fopen(fname,"r");
  if (!fd)
  {
    printf("Couldn't open parameter file %s",fname);
  }

  fgets(mpeg2veparam->h_id_string,254,fd);

  fgets(line,254,fd); sscanf(line,"%s",mpeg2veparam->h_tplorg);
  fgets(line,254,fd); sscanf(line,"%s",mpeg2veparam->h_tplref);
  fgets(line,254,fd); sscanf(line,"%s",mpeg2veparam->h_iqname);
  fgets(line,254,fd); sscanf(line,"%s",mpeg2veparam->h_niqname);
  fgets(line,254,fd); sscanf(line,"%s",mpeg2veparam->h_statname);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_inputtype);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_nframes);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_frame0);
  fgets(line,254,fd); sscanf(line,"%d:%d:%d:%d",&mpeg2veparam->h_h,
  						&mpeg2veparam->h_m,&mpeg2veparam->h_s,&mpeg2veparam->h_f1);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_N);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_M);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_mpeg1);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_fieldpic);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_horizontal_size);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_vertical_size);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_aspectratio);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_frame_rate_code);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_bit_rate);		// nc int
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_vbv_buffer_size);   
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_low_delay);	  
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_constrparms);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_profile);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_level);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_prog_seq);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_chroma_format);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_video_format);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_color_primaries);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_transfer_characteristics);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_matrix_coefficients);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_display_horizontal_size);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_display_vertical_size);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_dc_prec);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_topfirst);

  fgets(line,254,fd); sscanf(line,"%d %d %d",
    mpeg2veparam->h_frame_pred_dct_tab,mpeg2veparam->h_frame_pred_dct_tab+1,mpeg2veparam->h_frame_pred_dct_tab+2);
  
  fgets(line,254,fd); sscanf(line,"%d %d %d",
    mpeg2veparam->h_conceal_tab,mpeg2veparam->h_conceal_tab+1,mpeg2veparam->h_conceal_tab+2);
  
  fgets(line,254,fd); sscanf(line,"%d %d %d",
    mpeg2veparam->h_qscale_tab,mpeg2veparam->h_qscale_tab+1,mpeg2veparam->h_qscale_tab+2);

  fgets(line,254,fd); sscanf(line,"%d %d %d",
    mpeg2veparam->h_intravlc_tab,mpeg2veparam->h_intravlc_tab+1,mpeg2veparam->h_intravlc_tab+2);
  fgets(line,254,fd); sscanf(line,"%d %d %d",
    mpeg2veparam->h_altscan_tab,mpeg2veparam->h_altscan_tab+1,mpeg2veparam->h_altscan_tab+2);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_repeatfirst);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_prog_frame);
/* intra slice interval refresh period */  
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_P);

  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_r);

  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_avg_act);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_Xi);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_Xp);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_Xb);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_d0i);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_d0p);
  fgets(line,254,fd); sscanf(line,"%d",&mpeg2veparam->h_d0b);

  /* For P pictures. Get motion_picdata in motion_picdata[h_M-1] */
  /* Parameters in following order								 */
  /* int forw_hor_f_code,forw_vert_f_code,int sxf,int syf		 */
  /* int back_hor_f_code,back_vert_f_code,int sxb,int syb 		 */
  
  fgets(line,254,fd);
  sscanf(line,"%d %d %d %d",
    &mpeg2veparam->h_motion_picdata[(mpeg2veparam->h_M-1)*8], &mpeg2veparam->h_motion_picdata[(mpeg2veparam->h_M-1)*8+1],
    &mpeg2veparam->h_motion_picdata[(mpeg2veparam->h_M-1)*8+2], &mpeg2veparam->h_motion_picdata[(mpeg2veparam->h_M-1)*8+3]);
  /* End P Pictures case */

  for (i=0; i<mpeg2veparam->h_M-1; i++)
  {
    fgets(line,254,fd);
    sscanf(line,"%d %d %d %d",
      &mpeg2veparam->h_motion_picdata[i*8], &mpeg2veparam->h_motion_picdata[i*8+1],
      &mpeg2veparam->h_motion_picdata[i*8+2], &mpeg2veparam->h_motion_picdata[i*8+3]);

    fgets(line,254,fd);
    sscanf(line,"%d %d %d %d",
	  &mpeg2veparam->h_motion_picdata[i*8+4], &mpeg2veparam->h_motion_picdata[i*8+5],
	  &mpeg2veparam->h_motion_picdata[i*8+6], &mpeg2veparam->h_motion_picdata[i*8+7]);
  }
  
  fclose(fd);
  
  if(mpeg2veparam->h_iqname[0] != '-')
  {
    /* read customized intra matrix */
    fd = fopen(mpeg2veparam->h_iqname,"r");
    if (!fd)
    {
      printf("Couldn't open quant matrix file %s",mpeg2veparam->h_iqname);
    }

    for (i=0; i<64; i++)
    {
      fscanf(fd,"%d",&v);
      if (v<1 || v>255)
			printf("invalid value in quant matrix");
      mpeg2veparam->h_intra_q[i] = v;
    }

    fclose(fd);
  }

  if(mpeg2veparam->h_niqname[0] != '-')	
  {
    /* read customized non-intra matrix */
    fd = fopen(mpeg2veparam->h_niqname,"r");
    if (!fd)
    {
      printf("Couldn't open quant matrix file %s",mpeg2veparam->h_niqname);
    }

    for (i=0; i<64; i++)
    {
      fscanf(fd,"%d",&v);
      if (v<1 || v>255)
		printf("invalid value in quant matrix");
	  mpeg2veparam->h_inter_q[i] = v;
    }

    fclose(fd);
  }
}

⌨️ 快捷键说明

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