int main() { // define number of samples to be computed unsigned int num_samples = 100; // Bezier points = control polygon, (n+1)x2 matrix MatX2 BP; // curve points MatX2 C_Casteljau, C_Bernstein; // read Bezier points if( !readBCV("../data/simple.bcv",BP) ) return -1; // compute curve points using Bernstein basis std::clock_t start = std::clock(); BernsteinCurve( C_Bernstein, BP, num_samples ); measureTime(start); // compute curve points using DeCasteljau start = std::clock(); CasteljauCurve( C_Casteljau, BP, num_samples ); measureTime(start); // export curves if( !writeMatrixData("../plots/output.txt",C_Bernstein) ) return -1; return 0; }
int main(int argc, char *argv[]) { long enteredMainTime = clock1000(); measureTime(NULL); setUdcCacheDir(); browserName = hBrowserName(); organization = "UCSC"; /* Push very early error handling - this is just * for the benefit of the cgiVarExists, which * somehow can't be moved effectively into doMiddle. */ htmlPushEarlyHandlers(); cgiSpoof(&argc, argv); char * link = webTimeStampedLinkToResourceOnFirstCall("HGStyle.css",TRUE); // resource file link if (link) // wrapped in html htmlSetStyle(link); oldVars = hashNew(10); if (cgiVarExists("hgt.redirectTool")) { printf("Content-type: text/html\n\n"); cart = cartForSession(hUserCookie(), NULL, NULL); printf("<html><body>\n"); printf("<form id=\"redirForm\" method=\"POST\" action=\"http://tefor.net/crisporMax/crispor.cgi\">\n"); printf("<input type=\"hidden\" name=\"pos\" value=\"%s\">", cartString(cart, "position")); printf("<input type=\"hidden\" name=\"org\" value=\"%s\">", cartString(cart, "db")); printf("<input type=\"hidden\" name=\"pam\" value=\"NGG\">\n"); // a hidden submit button, see // http://stackoverflow.com/questions/477691/submitting-a-form-by-pressing-enter-without-a-submit-button printf("<input type=\"submit\" style=\"position: absolute; left: -9999px; width: 1px; height: 1px;\">\n"); printf("</form>\n"); // a little javascript that clicks the submit button printf("<script>document.getElementById(\"redirForm\").submit();</script>\n"); printf("</body></html>\n"); } else cartHtmlShell("UCSC Genome Browser v"CGI_VERSION, doMiddle, hUserCookie(), excludeVars, oldVars); if (measureTiming) measureTime("Time to write and close cart"); if (measureTiming) { fprintf(stdout, "<span class='timing'>Overall total time: %ld millis<br /></span>\n", clock1000() - enteredMainTime); } cgiExitTime("hgTracks", enteredMainTime); return 0; }
MeasureResult SortMethodAnalyzer::measureSort(const InitializeParameters ¶meters) { int compareCount; SortTimeFunction stm(m_sortMethod, parameters, compareCount); double timeUsage = measureTime(stm, MEASURE_PROCESSTIME); return MeasureResult(parameters.m_elementCount, compareCount, timeUsage*1000); }
long long testPerformance(long long tests, int bit_count, int repetitions) { gmp_randstate_t RAND; gmp_randinit_default(RAND); gmp_randseed_ui(RAND, getTime()); mpz_t base; mpz_init_set_ui(base, 1); mpz_mul_2exp(base, base, bit_count-1); // base = 2^(bit_count-1) mpz_t n; mpz_init(n); long long time = 0; int test; for (test = 0; test < tests; test++) { mpz_urandomb(n, RAND, bit_count-1); mpz_add(n, n, base); // n has bit_count bits time += measureTime(n, repetitions); } mpz_clear(n); mpz_clear(base); gmp_randclear(RAND); return time / tests; // Average }
int main(int argc, char *argv[]) { long enteredMainTime = clock1000(); measureTime(NULL); browserName = hBrowserName(); organization = "UCSC"; /* Push very early error handling - this is just * for the benefit of the cgiVarExists, which * somehow can't be moved effectively into doMiddle. */ htmlPushEarlyHandlers(); cgiSpoof(&argc, argv); char * link = webTimeStampedLinkToResourceOnFirstCall("HGStyle.css",TRUE); // resource file link if (link) // wrapped in html htmlSetStyle(link); oldVars = hashNew(10); if (cgiVarExists("hgt.redirectTool")) { printf("Content-type: text/html\n\n"); errAbortSetDoContentType(FALSE); cart = cartForSession(hUserCookie(), NULL, NULL); extToolRedirect(cart, cgiString("hgt.redirectTool")); } else cartHtmlShell("UCSC Genome Browser v"CGI_VERSION, doMiddle, hUserCookie(), excludeVars, oldVars); if (measureTiming) measureTime("Time to write and close cart"); if (measureTiming) { fprintf(stdout, "<span class='timing'>Overall total time: %ld millis<br /></span>\n", clock1000() - enteredMainTime); } cgiExitTime("hgTracks", enteredMainTime); return 0; }
void menu::checkCollisiton() { // cout << "check \n"; _preState = _collistionFlag; float diffR = _parentR + _myR; /* cout << "diffR:"; cout << diffR; cout << "px,py,mx,my:"; cout << _parentPoint.x; cout << ", "; cout << _parentPoint.y; cout << ", "; cout << _myPoint.x; cout << ", "; cout << _myPoint.y; cout << "\n "; */ float diffValue = sqrt( (_parentPoint.x - _myPoint.x)*(_parentPoint.x - _myPoint.x)+ (_parentPoint.y - _myPoint.y)*(_parentPoint.y - _myPoint.y)); if (diffValue < diffR) { _collistionFlag = true; if (_preState == false) { _startTime = ofGetElapsedTimeMillis(); } } else { _collistionFlag = false; _menuSelected = false; _startTime = 0; _continueTime = 0; } measureTime(); }
task main() { clearTimer(T1); wait1Msec(200); SensorType[left] = testSensorType; SensorType[middle] = testSensorType; SensorType[right] = testSensorType; bFloatConversionErrors = false; for (TInstructions index = typeIdleLoop; index < typeLast; ++index) { nElapsedTime[index] = 0.0; } //memset(nElapsedTime, 0, sizeof(nElapsedTime)); clearTimer(T1); while (true) { measureTime(typeIdleLoop); measureTime(typeAlive); measureTime(typeIntegerAssignConstant); measureTime(typeIntegerAddConstant); measureTime(typeIntegerAssignVariable); measureTime(typeIntegerAssignIndexed); measureTime(typeIntegerAddVariable); measureTime(typeIntegerAssignSensor); measureTime(typeLongAssignConstant); measureTime(typeLongAssignVariable); measureTime(typeLongAssignIndexed); measureTime(typeLongAddConstant); measureTime(typeLongAddVariable); measureTime(typeLongTimes); measureTime(typeFloatAssignConstant); measureTime(typeFloatAssignVariable); measureTime(typeFloatAddConstant); measureTime(typeFloatAddVariable); measureTime(typeFloatTimes); #if defined(hasTranscendentalSupport) measureTime(typeSine); measureTime(typeCosine); #endif measureTime(typeLogical); measureTime(typeTrinaryAdd); measureTime(typeTrinaryAddConstant1); measureTime(typeTrinaryAddConstant2); #if defined(NXT) || defined(TETRIX) measureTime(typeClearScreen); measureTime(typeClearPixel); measureTime(typeRectangleDraw); measureTime(typeRectangleErase); measureTime(typeRectangleFill); //measureTime(typeIOMapRead); #endif playSound(soundBeepBeep); } return; }
/* yj: Added MultiSliceFlag for multi-slice decoding */ OMX_BOOL AvcDecoder_OMX::AvcDecodeVideo_OMX( OMX_U8** aOutBuf, OMX_U32* aOutBufSize, OMX_TICKS* aOutTimestamp, OMX_U8** aInBuf, OMX_U32* aInBufSize, OMX_TICKS* aInTimestamp, OMX_PARAM_PORTDEFINITIONTYPE* aPortParam, OMX_S32* iFrameCount, OMX_BOOL aMarkerFlag, OMX_BOOL *aResizeFlag, OMX_BOOL MultiSliceFlag) { OMX_BOOL Status = OMX_TRUE; int ret = 0; unsigned char* pNalBuffer = *aInBuf; int NalSize = *aInBufSize; // RainAde for thumbnail //*aInBufSize = 0; *aResizeFlag = OMX_FALSE; #ifdef MFC_FPS gettimeofday(&start, NULL); decode_cnt++; #endif ret = mfc_dec_slice(pNalBuffer, NalSize, MultiSliceFlag); switch(ret) { case -1 : { Status = OMX_FALSE; LOGE("mfc_dec_slice fail\n"); break; } case 0: { #ifdef MFC_FPS need_cnt++; #endif Status = OMX_TRUE; // RainAde for thumbnail *aInBufSize = 0; break; } case 1 : { #ifdef MFC_FPS gettimeofday(&stop, NULL); time += measureTime(&start, &stop); frame_cnt++; #endif if(aPortParam->format.video.nFrameWidth != (unsigned int)iDisplay_Width || aPortParam->format.video.nFrameHeight != (unsigned int)iDisplay_Height) { LOGV("iDisplay_Width : %d\n", (int)iDisplay_Width); LOGV("iDisplay_Height: %d\n", (int)iDisplay_Height); if(iDisplay_Width > 720) { Status = OMX_FALSE; break; } aPortParam->format.video.nFrameWidth = iDisplay_Width; aPortParam->format.video.nFrameHeight = iDisplay_Height; *aResizeFlag = OMX_TRUE; Status = OMX_TRUE; break; } if(AddTimestamp(aInTimestamp) == OMX_FALSE) { LOGE("AddTimestamp fail\n"); return OMX_FALSE; } if(GetYuv(aOutBuf, aOutBufSize, aOutTimestamp) == OMX_FALSE) { Status = OMX_FALSE; break; } (*iFrameCount)++; Status = OMX_TRUE; // RainAde for thumbnail *aInBufSize = 0; break; } default : { Status = OMX_FALSE; LOGE("UnExpected Operation\n"); break; } } if(Status == OMX_FALSE) { *iFrameCount = 0; *aOutBufSize = 0; return OMX_FALSE; } return OMX_TRUE; }
int Test_Decoder_Ring_Buffer(int argc, char **argv) { void *handle; void *pStrmBuf; long nStrmSize; int nReadLeng; long nYUVLeng; int in_fd, out_fd; char *in_addr; int cnt = 1; int file_size; int remain; struct stat s; unsigned char *pYUVBuf; SSBSIP_MFC_STREAM_INFO stream_info; #ifdef FPS struct timeval start, stop; unsigned int time = 0; int frame_cnt = 0; #endif #ifdef ROTATE_ENABLE int rotation_value; #endif if (argc != 3) { printf("Usage : mfc <input file name> <output filename>\n"); return -1; } /////////////////////////////////// // Input/Output Stream File Open // /////////////////////////////////// in_fd = open(argv[1], O_RDONLY); out_fd = open(argv[2], O_RDWR | O_CREAT | O_TRUNC, 0644); if( (in_fd < 0) || (out_fd < 0) ) { LOG_MSG(LOG_ERROR, "Test_Decoder_Ring_Buffer", "Input/Output file open failed\n"); return -1; } // get input file size fstat(in_fd, &s); file_size = s.st_size; // Input file should be mapped with memory. // because file operations have a lot of performance down. // So, I Strongly recommend you to use mmap() of input file. in_addr = (char *)mmap(0, file_size, PROT_READ, MAP_SHARED, in_fd, 0); if(in_addr == NULL) { LOG_MSG(LOG_ERROR, "Test_Decoder_Ring_Buffer", "Mmap of Input file was failed\n"); return -1; } LOG_MSG(LOG_TRACE, "Test_Decoder_Ring_Buffer", "### Start Decoding\n"); ///////////////////////////////////// /// 1. Create new instance /// /// (SsbSipMfcDecodeInit) /// ///////////////////////////////////// handle = SsbSipMfcDecodeInit(SSBSIPMFCDEC_H264); if (handle == NULL) { LOG_MSG(LOG_ERROR, "Test_Decoder_Ring_Buffer", "SsbSipMfcDecodeInit Failed.\n"); return -1; } //////////////////////////////////////////// /// 2. Obtaining the Input Buffer /// /// (SsbSipMfcDecodeGetInBuf) /// //////////////////////////////////////////// pStrmBuf = SsbSipMfcDecodeGetInBuf(handle, &nStrmSize); if (pStrmBuf == NULL) { LOG_MSG(LOG_ERROR, "Test_Decoder_Ring_Buffer", "SsbSipMfcDecodeGetInBuf Failed.\n"); SsbSipMfcDecodeDeInit(handle); return -1; } LOG_MSG(LOG_ERROR, "Test_Decoder_Ring_Buffer", "XXXX pStrmBuf =0x%X.\n", pStrmBuf); ///////////////////////////////////////////// // Read Video Stream from File // // (Size of reading is returned // // by SsbSipMfcDecodeGetInBuf() call) // ///////////////////////////////////////////// remain = file_size; memcpy(pStrmBuf, in_addr, nStrmSize); remain -= nStrmSize; LOG_MSG(LOG_TRACE, "Test_Decoder_Ring_Buffer", "remain = %d\n", remain); //////////////////////////////////// // Rotation Test // //////////////////////////////////// #ifdef ROTATE_ENABLE rotation_value = 0x11; SsbSipMfcDecodeSetConfig(handle, MFC_DEC_SETCONF_POST_ROTATE, &rotation_value); #endif //////////////////////////////////////////////////////////////// /// 3. Configuring the instance with the config stream /// /// (SsbSipMfcDecodeExe) /// //////////////////////////////////////////////////////////////// if (SsbSipMfcDecodeExe(handle, nStrmSize) != SSBSIP_MFC_DEC_RET_OK) { LOG_MSG(LOG_TRACE, "Test_Decoder_Ring_Buffer", "MFC Decoder(RING_BUF mode) Configuration Failed.\n"); return -1; } ///////////////////////////////////// /// 4. Get stream information /// ///////////////////////////////////// SsbSipMfcDecodeGetConfig(handle, MFC_DEC_GETCONF_STREAMINFO, &stream_info); LOG_MSG(LOG_TRACE, "Test_Decoder_Ring_Buffer", \ "\t<STREAMINFO> width=%d height=%d buf_width=%d buf_height=%d.\n", \ stream_info.width, stream_info.height, stream_info.buf_width, stream_info.buf_height); while(1) { //////////////////////////////////////////// /// 5. Obtaining the Input Buffer /// /// (SsbSipMfcDecodeGetInBuf) /// //////////////////////////////////////////// pStrmBuf = SsbSipMfcDecodeGetInBuf(handle, &nStrmSize); ////////////////////////////////////////////////// /// Fill the Input Buffer only if required. /// ////////////////////////////////////////////////// if (nStrmSize > 0) { if (remain >= nStrmSize) { //printf("\n##################################"); //printf("\n# READING ONE UNIT FROM FILE #"); //printf("\n##################################\n"); cnt++; memcpy(pStrmBuf, in_addr + (cnt * nStrmSize), nStrmSize); remain -= nStrmSize; nReadLeng = nStrmSize; } else { //printf("\n##########################################"); //printf("\n## READING THE LAST BLOCK OF FILE ##"); //printf("\n##########################################"); cnt++; memcpy(pStrmBuf, in_addr + (cnt * nStrmSize), remain); nReadLeng = remain; remain = 0; } // LOG_MSG(LOG_TRACE, "Test_Decoder_Ring_Buffer", "remain = %d\n", remain); } else { nReadLeng = 0; } #ifdef FPS gettimeofday(&start, NULL); #endif ///////////////////////////////// /// 6. DECODE /// /// (SsbSipMfcDecodeExe) /// ///////////////////////////////// if (SsbSipMfcDecodeExe(handle, nReadLeng) != SSBSIP_MFC_DEC_RET_OK) break; #ifdef FPS gettimeofday(&stop, NULL); time += measureTime(&start, &stop); frame_cnt++; #endif ///////////////////////////////////////////// /// 7. Obtaining the Output Buffer /// /// (SsbSipMfcDecodeGetOutBuf) /// ///////////////////////////////////////////// pYUVBuf = SsbSipMfcDecodeGetOutBuf(handle, &nYUVLeng); #ifndef FPS write(out_fd, pYUVBuf, (stream_info.buf_width * stream_info.buf_height * 3) >> 1); #endif } #ifdef FPS LOG_MSG(LOG_TRACE, "Test_Decoder_Ring_Buffer", \ "Decoding Time : %u, Frame Count : %d, FPS : %f\n", time, frame_cnt, (float)frame_cnt*1000/time); #endif ////////////////////////////////////// /// 8. SsbSipMfcDecodeDeInit /// ////////////////////////////////////// SsbSipMfcDecodeDeInit(handle); munmap(in_addr, file_size); LOG_MSG(LOG_TRACE, "Test_Decoder_Ring_Buffer", "\n\n@@@ Program ends.\n"); close(in_fd); close(out_fd); return 0; }
int Test_Encoder(int argc, char **argv) { int dev_fd, in_fd, out_fd; char *addr, *in_addr; int cnt = 0; int file_size; int frame_count; int frame_size; char *in_buf, *out_buf; struct stat s; // arguments of ioctl MFC_ENC_INIT_ARG enc_init; MFC_ENC_EXE_ARG enc_exe; MFC_GET_BUF_ADDR_ARG get_buf_addr; #ifdef FPS struct timeval start, stop; unsigned int time = 0; int frame_cnt = 0; #endif if (argc != 8) { printf("Usage : mfc <YUV file name> <output filename> <width> <height> "); printf("<frame rate> <bitrate> <GOP number>\n"); return -1; } // in/out file open in_fd = open(argv[1], O_RDONLY); out_fd = open(argv[2], O_RDWR | O_CREAT | O_TRUNC, 0644); if( (in_fd < 0) || (out_fd < 0) ) { printf("input/output file open error\n"); return -1; } // get input file size fstat(in_fd, &s); file_size = s.st_size; // mapping input file to memory in_addr = (char *)mmap(0, file_size, PROT_READ, MAP_SHARED, in_fd, 0); if(in_addr == NULL) { printf("input file memory mapping failed\n"); return -1; } // MFC open dev_fd = open(MFC_DEV_NAME, O_RDWR|O_NDELAY); if (dev_fd < 0) { printf("MFC open error : %d\n", dev_fd); return -1; } // mapping shared in/out buffer between App and D/D addr = (char *) mmap(0, BUF_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, dev_fd, 0 ); if (addr == NULL) { printf("MFC mmap failed\n"); return -1; } // Below ioctl function support multiple slice mode in H.263 encoding case only //ioctl(dev_fd, IOCTL_MFC_SET_H263_MULTIPLE_SLICE); // set encoding arguments enc_init.in_width = atoi(argv[3]); enc_init.in_height = atoi(argv[4]); enc_init.in_frameRateRes = atoi(argv[5]); enc_init.in_frameRateDiv = 0; enc_init.in_bitrate = atoi(argv[6]); enc_init.in_gopNum = atoi(argv[7]); ioctl(dev_fd, IOCTL_MFC_H263_ENC_INIT, &enc_init); frame_size = (enc_init.in_width * enc_init.in_height * 3) >> 1; frame_count = file_size / frame_size; // get input buffer address get_buf_addr.in_usr_data = (int)addr; ioctl(dev_fd, IOCTL_MFC_GET_FRAM_BUF_ADDR, &get_buf_addr); in_buf = (char *)get_buf_addr.out_buf_addr; // get output buffer address get_buf_addr.in_usr_data = (int)addr; ioctl(dev_fd, IOCTL_MFC_GET_LINE_BUF_ADDR, &get_buf_addr); out_buf = (char *)get_buf_addr.out_buf_addr; while(frame_count > 0) { // copy YUV data into input buffer memcpy(in_buf, in_addr + frame_size * cnt, frame_size); #ifdef FPS gettimeofday(&start, NULL); #endif // encoding ioctl(dev_fd, IOCTL_MFC_H263_ENC_EXE, &enc_exe); if(enc_exe.ret_code != 0) { printf("ret code : %d\n", enc_exe.ret_code); } #ifdef FPS gettimeofday(&stop, NULL); time += measureTime(&start, &stop); frame_cnt++; #endif #ifndef FPS write(out_fd, out_buf, enc_exe.out_encoded_size); #endif frame_count--; cnt++; } #ifdef FPS printf("Decoding Time : %u, Frame Count : %d, FPS : %f\n", time, frame_cnt, (float)frame_cnt*1000/time); #endif close(dev_fd); close(in_fd); close(out_fd); return 0; }
void menu(void) { int n=0; int num; int ch; int i; while(1) { printf("=========menu========= \n"); // 처음부터 보여질 메뉴 printf("1. Factorial \n"); printf("2. Fibo \n"); printf("3. Hanoi Tower \n"); printf("4. Performance test \n"); printf("선택: "); // 사용자가 선택. scanf("%d", &n); switch(n) { case 1: printf("\n"); printf("Factorial 숫자 입력: "); scanf("%d", &num); printf("%d! = %d \n", num, Factorial(num)); // 팩토리얼 함수 호출 printf("\n\n\n"); break; case 2: printf("\n"); printf("Fibo 숫자 입력: "); scanf("%d", &num); for(i=1; i<num+1; i++) { ch = Fibo(i); printf("%d ", ch); } // 반복문으로 피보나치 수열 출력 printf("\n\n\n"); break; case 3: printf("\n"); printf("Honoi Tower 숫자 입력: "); scanf("%d", &num); Hanoi_Tower(num, 'A', 'B', 'C'); // 하노이타워 함수 호출 printf("\n\n\n"); break; case 4: printf("\n\n\n"); while(1) { measureTime(); // 시간측정 함수 호출. 원래 메뉴 대신 시간측정 메뉴가 나온다. } break; default: printf("1~4까지 선택해주세요. \n"); // 사용자가 잘못 입력했을 경우. printf("\n\n"); } } return ; }
int main() { simpleUnitTest(); measureTime(); return 0; }
int Test_Display_VC1(int argc, char **argv) { void *pStrmBuf; int nFrameLeng = 0; unsigned int pYUVBuf[2]; int is_first; struct pollfd test_fd; struct stat s; MMAP_STRM_PTR file_strm; SSBSIP_H264_STREAM_INFO stream_info; s3c_pp_params_t pp_param; s3c_win_info_t osd_info_to_driver; struct fb_fix_screeninfo lcd_info; #ifdef FPS struct timeval start, stop; unsigned int time = 0; int frame_cnt = 0; #endif int r = 0; if(signal(SIGINT, sig_del_vc1) == SIG_ERR) { printf("Sinal Error\n"); } if (argc != 3) { printf("Usage : #./mfc <file name> <run mode>\n"); printf(" - <file name> : VC-1 file to be displayed.\n"); printf(" - <run mode> : 0 (PP DMA Mode), 1 (PP FIFO Mode)\n"); return -1; } // in file open in_fd = open(argv[1], O_RDONLY); if(in_fd < 0) { printf("Input file open failed\n"); return -1; } // get input file size fstat(in_fd, &s); file_size = s.st_size; // mapping input file to memory in_addr = (char *)mmap(0, file_size, PROT_READ, MAP_SHARED, in_fd, 0); if(in_addr == NULL) { printf("input file memory mapping failed\n"); return -1; } // Post processor open pp_fd = open(PP_DEV_NAME, O_RDWR|O_NONBLOCK); if(pp_fd < 0) { printf("Post processor open error\n"); return -1; } // LCD frame buffer open fb_fd = open(FB_DEV_NAME, O_RDWR|O_NDELAY); if(fb_fd < 0) { printf("LCD frame buffer open error\n"); return -1; } ////////////////////////////////////// /// 1. Create new instance /// /// (SsbSipMPEG4DecodeInit) /// ////////////////////////////////////// handle = SsbSipVC1DecodeInit(); if (handle == NULL) { printf("VC1_Dec_Init Failed.\n"); return -1; } ///////////////////////////////////////////// /// 2. Obtaining the Input Buffer /// /// (SsbSipMPEG4DecodeGetInBuf) /// ///////////////////////////////////////////// pStrmBuf = SsbSipVC1DecodeGetInBuf(handle, 200000); if (pStrmBuf == NULL) { printf("SsbSipVC1DecodeGetInBuf Failed.\n"); SsbSipVC1DecodeDeInit(handle); return -1; } //////////////////////////////////// // MPEG4 CONFIG stream extraction // //////////////////////////////////// file_strm.p_start = file_strm.p_cur = (unsigned char *)in_addr; file_strm.p_end = (unsigned char *)(in_addr + file_size); nFrameLeng = ExtractConfigStreamVC1(&file_strm, pStrmBuf, INPUT_BUFFER_SIZE, NULL); //////////////////////////////////////////////////////////////// /// 3. Configuring the instance with the config stream /// /// (SsbSipMPEG4DecodeExe) /// //////////////////////////////////////////////////////////////// r = SsbSipVC1DecodeExe(handle, nFrameLeng); if (r != SSBSIP_VC1_DEC_RET_OK) { printf("VC-1 Decoder Configuration Failed. : %d\n", r); return -1; } ///////////////////////////////////// /// 4. Get stream information /// ///////////////////////////////////// SsbSipVC1DecodeGetConfig(handle, VC1_DEC_GETCONF_STREAMINFO, &stream_info); printf("\t<STREAMINFO> width=%d height=%d buf_width=%d buf_height=%d.\n", \ stream_info.width, stream_info.height, stream_info.buf_width, stream_info.buf_height); // set post processor configuration pp_param.src_full_width = stream_info.buf_width; pp_param.src_full_height = stream_info.buf_height; pp_param.src_start_x = 0; pp_param.src_start_y = 0; pp_param.src_width = pp_param.src_full_width; pp_param.src_height = pp_param.src_full_height; pp_param.src_color_space = YC420; pp_param.dst_start_x = 0; pp_param.dst_start_y = 0; pp_param.dst_full_width = FB0_WIDTH; // destination width pp_param.dst_full_height = FB0_HEIGHT; // destination height pp_param.dst_width = pp_param.dst_full_width; pp_param.dst_height = pp_param.dst_full_height; pp_param.dst_color_space = FB0_COLOR_SPACE; if ( atoi (argv[2]) == 0 ) pp_param.out_path = DMA_ONESHOT; else { pp_param.out_path = FIFO_FREERUN; pp_param.scan_mode = PROGRESSIVE_MODE; } ioctl(pp_fd, S3C_PP_SET_PARAMS, &pp_param); // get LCD frame buffer address fb_size = pp_param.dst_full_width * pp_param.dst_full_height * 2; // RGB565 #ifdef RGB24BPP fb_size = pp_param.dst_full_width * pp_param.dst_full_height * 4; // RGB888 #endif fb_addr = (char *)mmap(0, fb_size, PROT_READ | PROT_WRITE, MAP_SHARED, fb_fd, 0); if (fb_addr == NULL) { printf("LCD frame buffer mmap failed\n"); return -1; } osd_info_to_driver.Bpp = FB0_BPP; // RGB16 osd_info_to_driver.LeftTop_x = 0; osd_info_to_driver.LeftTop_y = 0; osd_info_to_driver.Width = FB0_WIDTH; // display width osd_info_to_driver.Height = FB0_HEIGHT; // display height // set OSD's information if(ioctl(fb_fd, SET_OSD_INFO, &osd_info_to_driver)) { printf("Some problem with the ioctl SET_OSD_INFO\n"); return -1; } ioctl(fb_fd, SET_OSD_START); if ( FIFO_FREERUN == pp_param.out_path ) { is_first = 1; } while(1) { #ifdef FPS gettimeofday(&start, NULL); #endif ////////////////////////////////// /// 5. DECODE /// /// (SsbSipMPEG4DecodeExe) /// ////////////////////////////////// if (SsbSipVC1DecodeExe(handle, nFrameLeng) != SSBSIP_VC1_DEC_RET_OK) break; ////////////////////////////////////////////// /// 6. Obtaining the Output Buffer /// /// (SsbSipMPEG4DecodeGetOutBuf) /// ////////////////////////////////////////////// SsbSipVC1DecodeGetConfig(handle, VC1_DEC_GETCONF_PHYADDR_FRAM_BUF, pYUVBuf); ///////////////////////////// // Next MPEG4 VIDEO stream // ///////////////////////////// nFrameLeng = NextFrameVC1(&file_strm, pStrmBuf, INPUT_BUFFER_SIZE, NULL); if (nFrameLeng < 4) break; // Post processing // pp_param.SrcFrmSt에는 MFC의 output buffer의 physical address가 // pp_param.DstFrmSt에는 LCD frame buffer의 physical address가 입력으로 넣어야 한다. if ( FIFO_FREERUN == pp_param.out_path ) { if ( is_first ) { pp_param.src_buf_addr_phy = pYUVBuf[0]; ioctl(pp_fd, S3C_PP_SET_SRC_BUF_ADDR_PHY, &pp_param); ioctl(pp_fd, S3C_PP_START); is_first = 0; } else { pp_param.src_next_buf_addr_phy = pYUVBuf[0]; ioctl(pp_fd, S3C_PP_SET_SRC_BUF_NEXT_ADDR_PHY, &pp_param); } } else { pp_param.src_buf_addr_phy = pYUVBuf[0]; ioctl(pp_fd, S3C_PP_SET_SRC_BUF_ADDR_PHY, &pp_param); ioctl(fb_fd, FBIOGET_FSCREENINFO, &lcd_info); pp_param.dst_buf_addr_phy = lcd_info.smem_start; // LCD frame buffer ioctl(pp_fd, S3C_PP_SET_DST_BUF_ADDR_PHY, &pp_param); test_fd.fd = pp_fd; test_fd.events = POLLOUT|POLLERR; poll(&test_fd, 1, 3000); ioctl(pp_fd, S3C_PP_START); } #ifdef FPS gettimeofday(&stop, NULL); time += measureTime(&start, &stop); frame_cnt++; #endif } #ifdef FPS printf("Display Time : %u, Frame Count : %d, FPS : %f\n", time, frame_cnt, (float)frame_cnt*1000/time); #endif SsbSipVC1DecodeDeInit(handle); munmap(in_addr, file_size); munmap(fb_addr, fb_size); close(pp_fd); close(fb_fd); close(in_fd); return 0; }
void doSearchTracks(struct group *groupList) { webIncludeResourceFile("ui.dropdownchecklist.css"); jsIncludeFile("ui.dropdownchecklist.js",NULL); // This line is needed to get the multi-selects initialized jsIncludeFile("ddcl.js",NULL); struct group *group; char *groups[128]; char *labels[128]; int numGroups = 1; groups[0] = ANYLABEL; labels[0] = ANYLABEL; char *nameSearch = cartOptionalString(cart, TRACK_SEARCH_ON_NAME); char *typeSearch = cartUsualString( cart, TRACK_SEARCH_ON_TYPE,ANYLABEL); char *simpleEntry = cartOptionalString(cart, TRACK_SEARCH_SIMPLE); char *descSearch = cartOptionalString(cart, TRACK_SEARCH_ON_DESCR); char *groupSearch = cartUsualString( cart, TRACK_SEARCH_ON_GROUP,ANYLABEL); boolean doSearch = sameString(cartOptionalString(cart, TRACK_SEARCH), "Search") || cartUsualInt(cart, TRACK_SEARCH_PAGER, -1) >= 0; struct sqlConnection *conn = hAllocConn(database); boolean metaDbExists = sqlTableExists(conn, "metaDb"); int tracksFound = 0; boolean searchTermsExist = FALSE; int cols; char buf[512]; char *currentTab = cartUsualString(cart, TRACK_SEARCH_CURRENT_TAB, "simpleTab"); enum searchTab selectedTab = (sameString(currentTab, "advancedTab") ? advancedTab : simpleTab); // NOTE: could support quotes in simple tab by detecting quotes and choosing // to use doesNameMatch() || doesDescriptionMatch() if (selectedTab == simpleTab && !isEmpty(simpleEntry)) stripChar(simpleEntry, '"'); trackList = getTrackList(&groupList, -2); // global makeGlobalTrackHash(trackList); // NOTE: This is necessary when container cfg by '*' results in vis changes // This will handle composite/view override when subtrack specific vis exists, // AND superTrack reshaping. // Subtrack settings must be removed when composite/view settings are updated parentChildCartCleanup(trackList,cart,oldVars); slSort(&groupList, gCmpGroup); for (group = groupList; group != NULL; group = group->next) { groupTrackListAddSuper(cart, group); if (group->trackList != NULL) { groups[numGroups] = cloneString(group->name); labels[numGroups] = cloneString(group->label); numGroups++; if (numGroups >= ArraySize(groups)) internalErr(); } } safef(buf, sizeof(buf),"Search for Tracks in the %s %s Assembly", organism, hFreezeFromDb(database)); webStartWrapperDetailedNoArgs(cart, database, "", buf, FALSE, FALSE, FALSE, FALSE); hPrintf("<div style='max-width:1080px;'>"); hPrintf("<form action='%s' name='%s' id='%s' method='get'>\n\n", hgTracksName(),TRACK_SEARCH_FORM,TRACK_SEARCH_FORM); cartSaveSession(cart); // Creates hidden var of hgsid to avoid bad voodoo safef(buf, sizeof(buf), "%lu", clock1()); cgiMakeHiddenVar("hgt_", buf); // timestamps page to avoid browser cache hPrintf("<input type='hidden' name='db' value='%s'>\n", database); hPrintf("<input type='hidden' name='%s' id='currentTab' value='%s'>\n", TRACK_SEARCH_CURRENT_TAB, currentTab); hPrintf("<input type='hidden' name='%s' value=''>\n",TRACK_SEARCH_DEL_ROW); hPrintf("<input type='hidden' name='%s' value=''>\n",TRACK_SEARCH_ADD_ROW); hPrintf("<input type='hidden' name='%s' value=''>\n",TRACK_SEARCH_PAGER); hPrintf("<div id='tabs' style='display:none; %s'>\n<ul>\n<li><a href='#simpleTab'>" "<B style='font-size:.9em;font-family: arial, Geneva, Helvetica, san-serif;'>Search</B>" "</a></li>\n<li><a href='#advancedTab'>" "<B style='font-size:.9em;font-family: arial, Geneva, Helvetica, san-serif;'>Advanced</B>" "</a></li>\n</ul>\n<div id='simpleTab' style='max-width:inherit;'>\n", cgiBrowser()==btIE?"width:1060px;":"max-width:inherit;"); hPrintf("<table id='simpleTable' style='width:100%%; font-size:.9em;'><tr><td colspan='2'>"); hPrintf("<input type='text' name='%s' id='simpleSearch' class='submitOnEnter' value='%s' " "style='max-width:1000px; width:100%%;' onkeyup='findTracks.searchButtonsEnable(true);'>\n", TRACK_SEARCH_SIMPLE,simpleEntry == NULL ? "" : simpleEntry); if (selectedTab==simpleTab && simpleEntry) searchTermsExist = TRUE; hPrintf("</td></tr><td style='max-height:4px;'></td></tr></table>"); //hPrintf("</td></tr></table>"); hPrintf("<input type='submit' name='%s' id='searchSubmit' value='search' " "style='font-size:.8em;'>\n", TRACK_SEARCH); hPrintf("<input type='button' name='clear' value='clear' class='clear' " "style='font-size:.8em;' onclick='findTracks.clear();'>\n"); hPrintf("<input type='submit' name='submit' value='cancel' class='cancel' " "style='font-size:.8em;'>\n"); hPrintf("</div>\n"); // Advanced tab hPrintf("<div id='advancedTab' style='width:inherit;'>\n" "<table id='advancedTable' cellSpacing=0 style='width:inherit; font-size:.9em;'>\n"); cols = 8; // Track Name contains hPrintf("<tr><td colspan=3></td>"); hPrintf("<td nowrap><b style='max-width:100px;'>Track Name:</b></td>"); hPrintf("<td align='right'>contains</td>\n"); hPrintf("<td colspan='%d'>", cols - 4); hPrintf("<input type='text' name='%s' id='nameSearch' class='submitOnEnter' value='%s' " "onkeyup='findTracks.searchButtonsEnable(true);' style='min-width:326px; font-size:.9em;'>", TRACK_SEARCH_ON_NAME, nameSearch == NULL ? "" : nameSearch); hPrintf("</td></tr>\n"); // Description contains hPrintf("<tr><td colspan=2></td><td align='right'>and </td>"); hPrintf("<td><b style='max-width:100px;'>Description:</b></td>"); hPrintf("<td align='right'>contains</td>\n"); hPrintf("<td colspan='%d'>", cols - 4); hPrintf("<input type='text' name='%s' id='descSearch' value='%s' class='submitOnEnter' " "onkeyup='findTracks.searchButtonsEnable(true);' " "style='max-width:536px; width:536px; font-size:.9em;'>", TRACK_SEARCH_ON_DESCR, descSearch == NULL ? "" : descSearch); hPrintf("</td></tr>\n"); if (selectedTab==advancedTab && !isEmpty(descSearch)) searchTermsExist = TRUE; hPrintf("<tr><td colspan=2></td><td align='right'>and </td>\n"); hPrintf("<td><b style='max-width:100px;'>Group:</b></td>"); hPrintf("<td align='right'>is</td>\n"); hPrintf("<td colspan='%d'>", cols - 4); cgiMakeDropListFull(TRACK_SEARCH_ON_GROUP, labels, groups, numGroups, groupSearch, "class='groupSearch' style='min-width:40%; font-size:.9em;'"); hPrintf("</td></tr>\n"); if (selectedTab==advancedTab && !isEmpty(groupSearch) && !sameString(groupSearch,ANYLABEL)) searchTermsExist = TRUE; // Track Type is (drop down) hPrintf("<tr><td colspan=2></td><td align='right'>and </td>\n"); hPrintf("<td nowrap><b style='max-width:100px;'>Data Format:</b></td>"); hPrintf("<td align='right'>is</td>\n"); hPrintf("<td colspan='%d'>", cols - 4); char **formatTypes = NULL; char **formatLabels = NULL; int formatCount = getFormatTypes(&formatLabels, &formatTypes); cgiMakeDropListFull(TRACK_SEARCH_ON_TYPE, formatLabels, formatTypes, formatCount, typeSearch, "class='typeSearch' style='min-width:40%; font-size:.9em;'"); hPrintf("</td></tr>\n"); if (selectedTab==advancedTab && !isEmpty(typeSearch) && !sameString(typeSearch,ANYLABEL)) searchTermsExist = TRUE; // mdb selects struct slPair *mdbSelects = NULL; if (metaDbExists) { struct slPair *mdbVars = mdbVarsSearchable(conn,TRUE,FALSE); // Tables but not file only objects mdbSelects = mdbSelectPairs(cart, mdbVars); char *output = mdbSelectsHtmlRows(conn,mdbSelects,mdbVars,cols,FALSE); // not a fileSearch if (output) { puts(output); freeMem(output); } slPairFreeList(&mdbVars); } hPrintf("</table>\n"); hPrintf("<input type='submit' name='%s' id='searchSubmit' value='search' " "style='font-size:.8em;'>\n", TRACK_SEARCH); hPrintf("<input type='button' name='clear' value='clear' class='clear' " "style='font-size:.8em;' onclick='findTracks.clear();'>\n"); hPrintf("<input type='submit' name='submit' value='cancel' class='cancel' " "style='font-size:.8em;'>\n"); //hPrintf("<a target='_blank' href='../goldenPath/help/trackSearch.html'>help</a>\n"); hPrintf("</div>\n"); hPrintf("</div>\n"); hPrintf("</form>\n"); hPrintf("</div>"); // Restricts to max-width:1000px; cgiDown(0.8); if (measureTiming) measureTime("Rendered tabs"); if (doSearch) { // Now search struct slRef *tracks = NULL; if (selectedTab==simpleTab && !isEmpty(simpleEntry)) tracks = simpleSearchForTracksstruct(simpleEntry); else if (selectedTab==advancedTab) tracks = advancedSearchForTracks(conn,groupList,nameSearch,typeSearch,descSearch, groupSearch,mdbSelects); if (measureTiming) measureTime("Searched for tracks"); // Sort and Print results if (selectedTab!=filesTab) { enum sortBy sortBy = cartUsualInt(cart,TRACK_SEARCH_SORT,sbRelevance); tracksFound = slCount(tracks); if (tracksFound > 1) findTracksSort(&tracks,sortBy); displayFoundTracks(cart,tracks,tracksFound,sortBy); if (measureTiming) measureTime("Displayed found tracks"); } slPairFreeList(&mdbSelects); } hFreeConn(&conn); webNewSection("About Track Search"); if (metaDbExists) hPrintf("<p>Search for terms in track names, descriptions, groups, and ENCODE " "metadata. If multiple terms are entered, only tracks with all terms " "will be part of the results."); else hPrintf("<p>Search for terms in track descriptions, groups, and names. " "If multiple terms are entered, only tracks with all terms " "will be part of the results."); hPrintf("<BR><a target='_blank' href='../goldenPath/help/trackSearch.html'>more help</a></p>\n"); webEndSectionTables(); }