int main(int argc, char *argv[]) #endif { sInputParams Params; // input parameters from command line CDecodingPipeline Pipeline; // pipeline for decoding, includes input file reader, decoder and output file writer mfxStatus sts = MFX_ERR_NONE; // return value check sts = ParseInputString(argv, (mfxU8)argc, &Params); MSDK_CHECK_PARSE_RESULT(sts, MFX_ERR_NONE, 1); if (Params.bIsMVC) Pipeline.SetMultiView(); sts = Pipeline.Init(&Params); MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, 1); // print stream info Pipeline.PrintInfo(); msdk_printf(MSDK_STRING("Decoding started\n")); for (;;) { sts = Pipeline.RunDecoding(); if (MFX_ERR_INCOMPATIBLE_VIDEO_PARAM == sts || MFX_ERR_DEVICE_LOST == sts || MFX_ERR_DEVICE_FAILED == sts) { if (MFX_ERR_INCOMPATIBLE_VIDEO_PARAM == sts) { msdk_printf(MSDK_STRING("\nERROR: Incompatible video parameters detected. Recovering...\n")); } else { msdk_printf(MSDK_STRING("\nERROR: Hardware device was lost or returned unexpected error. Recovering...\n")); sts = Pipeline.ResetDevice(); MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, 1); } sts = Pipeline.ResetDecoder(&Params); MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, 1); continue; } else { MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, 1); break; } } msdk_printf(MSDK_STRING("\nDecoding finished\n")); return 0; }
int main(int argc, char *argv[]) #endif { sInputParams Params = {}; // input parameters from command line std::auto_ptr<CEncodingPipeline> pPipeline; mfxStatus sts = MFX_ERR_NONE; // return value check sts = ParseInputString(argv, (mfxU8)argc, &Params); MSDK_CHECK_PARSE_RESULT(sts, MFX_ERR_NONE, 1); // Choosing which pipeline to use pPipeline.reset(CreatePipeline(Params)); MSDK_CHECK_POINTER(pPipeline.get(), MFX_ERR_MEMORY_ALLOC); if (MVC_ENABLED & Params.MVC_flags) { pPipeline->SetMultiView(); pPipeline->SetNumView(Params.numViews); } sts = pPipeline->Init(&Params); MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, sts); pPipeline->PrintInfo(); msdk_printf(MSDK_STRING("Processing started\n")); if (pPipeline->CaptureStartV4L2Pipeline() != MFX_ERR_NONE) { msdk_printf(MSDK_STRING("V4l2 failure terminating the program\n")); return 0; } for (;;) { sts = pPipeline->Run(); if (MFX_ERR_DEVICE_LOST == sts || MFX_ERR_DEVICE_FAILED == sts) { msdk_printf(MSDK_STRING("\nERROR: Hardware device was lost or returned an unexpected error. Recovering...\n")); sts = pPipeline->ResetDevice(); MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, 1); sts = pPipeline->ResetMFXComponents(&Params); MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, 1); continue; } else { MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, 1); break; } } pPipeline->CaptureStopV4L2Pipeline(); pPipeline->Close(); msdk_printf(MSDK_STRING("\nProcessing finished\n")); return 0; }
int main(int argc, char *argv[]) #endif { sInputParams Params; // input parameters from command line CCameraPipeline Pipeline; // pipeline for decoding, includes input file reader, decoder and output file writer mfxStatus sts = MFX_ERR_NONE; // return value check sts = ParseInputString(argv, (mfxU8)argc, &Params); MSDK_CHECK_PARSE_RESULT(sts, MFX_ERR_NONE, 1); sts = Pipeline.Init(&Params); MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, 1); // print stream info Pipeline.PrintInfo(); msdk_printf(MSDK_STRING("Camera pipe started\n")); #if defined(_WIN32) || defined(_WIN64) LARGE_INTEGER timeBegin, timeEnd, m_Freq; QueryPerformanceFrequency(&m_Freq); QueryPerformanceCounter(&timeBegin); #endif int resetNum = 0; for (;;) { sts = Pipeline.Run(); if (MFX_WRN_VIDEO_PARAM_CHANGED == sts) { sInputParams *pParams = &Params; if (resetNum >= (int)Params.resetParams.size()) break; msdk_strcopy(Params.strSrcFile, Params.resetParams[resetNum].strSrcFile); msdk_strcopy(pParams->strDstFile, Params.resetParams[resetNum].strDstFile); pParams->frameInfo[VPP_IN].nWidth = (mfxU16)Params.resetParams[resetNum].width; pParams->frameInfo[VPP_IN].nHeight = (mfxU16)Params.resetParams[resetNum].height; pParams->frameInfo[VPP_IN].CropW = pParams->frameInfo[VPP_IN].nWidth; if ( Params.resetParams[resetNum].cropW ) pParams->frameInfo[VPP_IN].CropW = Params.resetParams[resetNum].cropW; pParams->frameInfo[VPP_IN].CropH = pParams->frameInfo[VPP_IN].nHeight; if ( Params.resetParams[resetNum].cropH ) pParams->frameInfo[VPP_IN].CropH = Params.resetParams[resetNum].cropH; pParams->frameInfo[VPP_IN].CropX = align(Params.resetParams[resetNum].cropX); pParams->frameInfo[VPP_IN].CropY = Params.resetParams[resetNum].cropY; if ( ! pParams->frameInfo[VPP_IN].CropW ) { pParams->frameInfo[VPP_IN].CropW = pParams->frameInfo[VPP_IN].nWidth; } if ( ! pParams->frameInfo[VPP_IN].CropH ) { pParams->frameInfo[VPP_IN].CropH = pParams->frameInfo[VPP_IN].nHeight; } pParams->frameInfo[VPP_OUT].nWidth = pParams->frameInfo[VPP_IN].CropW; pParams->frameInfo[VPP_OUT].nHeight = pParams->frameInfo[VPP_IN].CropH; pParams->frameInfo[VPP_OUT].CropW = pParams->frameInfo[VPP_IN].CropW; pParams->frameInfo[VPP_OUT].CropH = pParams->frameInfo[VPP_IN].CropH; pParams->bayerType = Params.resetParams[resetNum].bayerType; pParams->bHP = Params.resetParams[resetNum].bHP; pParams->hp_diff = Params.resetParams[resetNum].hp_diff; pParams->hp_num = Params.resetParams[resetNum].hp_num; pParams->bBayerDenoise = Params.resetParams[resetNum].bDenoise; pParams->denoiseThreshold = Params.resetParams[resetNum].denoiseThreshold; pParams->bBlackLevel = Params.resetParams[resetNum].bBlackLevel; pParams->black_level_B = Params.resetParams[resetNum].black_level_B; pParams->black_level_G0= Params.resetParams[resetNum].black_level_G0; pParams->black_level_G1= Params.resetParams[resetNum].black_level_G1; pParams->black_level_R = Params.resetParams[resetNum].black_level_R; pParams->bWhiteBalance = Params.resetParams[resetNum].bWhiteBalance; pParams->white_balance_B = Params.resetParams[resetNum].white_balance_B; pParams->white_balance_G0= Params.resetParams[resetNum].white_balance_G0; pParams->white_balance_G1= Params.resetParams[resetNum].white_balance_G1; pParams->white_balance_R = Params.resetParams[resetNum].white_balance_R; pParams->bCCM = Params.resetParams[resetNum].bCCM; for (int k = 0; k < 3; k++) for (int z = 0; z < 3; z++) pParams->CCM[k][z] = Params.resetParams[resetNum].CCM[k][z]; //pParams->frameInfo[VPP_OUT].FourCC = MFX_FOURCC_ARGB16; //pParams->memTypeIn = pParams->memTypeOut = SYSTEM_MEMORY; sts = Pipeline.Reset(&Params); if (sts == MFX_ERR_INCOMPATIBLE_VIDEO_PARAM) { Pipeline.Close(); sts = Pipeline.Init(&Params); } if (sts != MFX_ERR_NONE) break; resetNum++; } else break; } #if defined(_WIN32) || defined(_WIN64) QueryPerformanceCounter(&timeEnd); double time = ((double)timeEnd.QuadPart - (double)timeBegin.QuadPart)/ (double)m_Freq.QuadPart; int frames = Pipeline.GetNumberProcessedFrames(); _tprintf(_T("Total frames %d \n"), frames); _tprintf(_T("Total time %.2lf sec\n"), time); _tprintf(_T("Total FPS %.2lf fps\n"), frames/time); #endif //Pipeline.Close(); if(MFX_ERR_ABORTED != sts) MSDK_CHECK_RESULT(sts, MFX_ERR_NONE, 1); msdk_printf(MSDK_STRING("\nCamera pipe finished\n")); return 0; }