static void VdecVenc_bitsRdFillEmptyBuf(VCODEC_BITSBUF_S *pEmptyBuf) { int statHdr, statData; int curCh; curCh = pEmptyBuf->chnId; statHdr = fscanf(Video_Len[curCh],"%d",&(pEmptyBuf->filledBufSize)); OSA_assert(pEmptyBuf->filledBufSize <= pEmptyBuf->bufSize); statData = fread(pEmptyBuf->bufVirtAddr,1, pEmptyBuf->filledBufSize, Video_File[curCh]); if( feof(Video_Len[curCh]) || statData != pEmptyBuf->filledBufSize) { clearerr(Video_Len[curCh]); fseek(Video_Len[curCh], 0 ,SEEK_SET); fseek(Video_File[curCh], 0, SEEK_SET); statHdr = fscanf(Video_Len[curCh],"%d",&(pEmptyBuf->filledBufSize)); OSA_assert(pEmptyBuf->filledBufSize <= pEmptyBuf->bufSize); statData = fread(pEmptyBuf->bufVirtAddr,1, pEmptyBuf->filledBufSize, Video_File[curCh]); } } static Void VdecVenc_bitsRdReadData(VCODEC_BITSBUF_LIST_S *emptyBufList) { VCODEC_BITSBUF_S *pEmptyBuf; Int i; for (i = 0; i < emptyBufList->numBufs; i++) { pEmptyBuf = &emptyBufList->bitsBuf[i]; VdecVenc_bitsRdFillEmptyBuf(pEmptyBuf); VdecVenc_setFrameTimeStamp(pEmptyBuf); } } char *VF_Name[24]= {"V1.264","V2.264","V3.264","V4.264","V5.264","V6.264","V7.264","V8.264","V9.264","V10.264","V11.264","V12.264", "V13.264","V14.264","V15.264","V16.264","V17.264","V18.264","V19.264","V20.264","V21.264","V22.264","V23.264","V24.264"}; char *VF_Len[24]= {"V1.txt","V2.txt","V3.txt","V4.txt","V5.txt","V6.txt","V7.txt","V8.txt","V9.txt","V10.txt","V11.txt","V12.txt", "V13.txt","V14.txt","V15.txt","V16.txt","V17.txt","V18.txt","V19.txt","V20.txt","V21.txt","V22.txt","V23.txt","V24.txt"}; //视频帧读取线程,按照固定的时间间隔从接收循环buffer中读取视频帧到解码器的输入buffer static Void *VdecVenc_bitsRdSendFxn(Void * prm) { VCODEC_BITSBUF_LIST_S emptyBufList; int i; int res = 0; int Period; int tmp_num; //Period = 1000/Frame_Rate; Period = 1000000/Frame_Rate; struct timeval tv_begin, tv_end; float runtime; struct itimerval interval, ointerval; interval.it_value.tv_sec = 0; interval.it_value.tv_usec = 1000000/Frame_Rate; interval.it_interval.tv_sec = 0; interval.it_interval.tv_usec = 1000000/Frame_Rate; signal(SIGALRM, timefun); OSA_semWait(&gVdecVenc_obj.thrStartSem,OSA_TIMEOUT_FOREVER); //setitimer(ITIMER_REAL, &interval, &ointerval); while (FALSE == gVdecVenc_obj.thrExit) { //OSA_semWait(&timer_Sem,OSA_TIMEOUT_FOREVER); for(i=0;i