?? tskprocess.c
字號:
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 + -