int main(int argc, char *argv[]) { pthread_t phifb0 = -1,phifb1=-1; PTHREAD_HIFB_sw_INFO stInfo0; PTHREAD_HIFB_sw_INFO stInfo1; VO_PUB_ATTR_S stPubAttr; VB_CONF_S stVbConf; HI_S32 s32Ret = HI_SUCCESS; HI_S32 i; sw_VI_MODE_E enViMode = sw_VI_MODE_1_D1; sw_VO_MODE_E stVoMode = VO_MODE_1MUX; HI_BOOL bExtendedMode=HI_TRUE; HI_CHAR ch; initFb(); InitQueue(); FontInit(); memset(&stVbConf, 0, sizeof(VB_CONF_S)); stVbConf.u32MaxPoolCnt = 16; stVbConf.astCommPool[0].u32BlkSize = 720*576*2; stVbConf.astCommPool[0].u32BlkCnt = 16; stPubAttr.u32BgColor = 0xff00ff00; stPubAttr.enIntfType = VO_INTF_VGA; stPubAttr.enIntfSync = VO_OUTPUT_720P50; stPubAttr.bDoubleFrame = HI_FALSE; if (HI_SUCCESS != sw_COMM_SYS_Init(&stVbConf)) { printf("func:%s,line:%d\n", __FUNCTION__, __LINE__); return -1; } s32Ret = sw_COMM_VO_StartDevLayer(VoDev,&stPubAttr,25); if (HI_SUCCESS != s32Ret) { printf("%s: Start DevLayer failed!\n", __FUNCTION__); sw_COMM_SYS_Exit(); return -1; } if (HI_SUCCESS != sw_COMM_VO_StartChn(VoDev, &stPubAttr, stVoMode)) { printf("%s: Start VOChn failed!\n", __FUNCTION__); sw_COMM_SYS_Exit(); return -1; } stInfo0.layer = 0; stInfo0.fd = -1; stInfo0.ctrlkey = 2; pthread_create(&phifb0,0,sw_HIFB_REFRESH,(void *)(&stInfo0)); stInfo1.layer = 3; stInfo1.fd = -1; stInfo1.ctrlkey = 3; if (HI_SUCCESS != HI_MPI_VO_GfxLayerUnBindDev(GRAPHICS_LAYER_HC0, sw_VO_DEV_DHD0)) { printf("%s: Graphic UnBind to VODev failed!,line:%d\n", __FUNCTION__, __LINE__); sw_COMM_SYS_Exit(); sw_HIFB_VO_Stop(); return -1; } if (HI_SUCCESS != HI_MPI_VO_GfxLayerBindDev(GRAPHICS_LAYER_HC0, sw_VO_DEV_DHD0)) { printf("%s: Graphic Bind to VODev failed!,line:%d\n", __FUNCTION__, __LINE__); sw_COMM_SYS_Exit(); sw_HIFB_VO_Stop(); return -1; } pthread_create(&phifb1,0,SAMPLE_HIFB_PANDISPLAY,(void *)(&stInfo1)); pthread_join(phifb0,0); pthread_join(phifb1,0); while(1); HI_MPI_SYS_Exit(); HI_MPI_VB_Exit(); return 0; }
//============================================================================== void Hdr::initInternal(const ConfigSet& initializer) { m_enabled = initializer.get("pps.hdr.enabled"); if(!m_enabled) { return; } const F32 renderingQuality = initializer.get("pps.hdr.renderingQuality"); m_width = renderingQuality * (F32)m_r->getWidth(); alignRoundDown(16, m_width); m_height = renderingQuality * (F32)m_r->getHeight(); alignRoundDown(16, m_height); m_exposure = initializer.get("pps.hdr.exposure"); m_blurringDist = initializer.get("pps.hdr.blurringDist"); m_blurringIterationsCount = initializer.get("pps.hdr.blurringIterationsCount"); initFb(m_hblurFb, m_hblurRt); initFb(m_vblurFb, m_vblurRt); // init shaders GlDevice& gl = getGlDevice(); GlCommandBufferHandle jobs(&gl); m_commonBuff = GlBufferHandle(jobs, GL_SHADER_STORAGE_BUFFER, sizeof(Vec4), GL_DYNAMIC_STORAGE_BIT); updateDefaultBlock(jobs); jobs.flush(); m_toneFrag.load("shaders/PpsHdr.frag.glsl", &getResourceManager()); m_tonePpline = m_r->createDrawQuadProgramPipeline(m_toneFrag->getGlProgram()); const char* SHADER_FILENAME = "shaders/VariableSamplingBlurGeneric.frag.glsl"; String pps(getAllocator()); pps.sprintf("#define HPASS\n" "#define COL_RGB\n" "#define BLURRING_DIST float(%f)\n" "#define IMG_DIMENSION %u\n" "#define SAMPLES %u\n", m_blurringDist, m_height, static_cast<U>(initializer.get("pps.hdr.samples"))); m_hblurFrag.load(ProgramResource::createSourceToCache( SHADER_FILENAME, pps.toCString(), "r_", getResourceManager()).toCString(), &getResourceManager()); m_hblurPpline = m_r->createDrawQuadProgramPipeline(m_hblurFrag->getGlProgram()); pps.sprintf("#define VPASS\n" "#define COL_RGB\n" "#define BLURRING_DIST float(%f)\n" "#define IMG_DIMENSION %u\n" "#define SAMPLES %u\n", m_blurringDist, m_width, static_cast<U>(initializer.get("pps.hdr.samples"))); m_vblurFrag.load(ProgramResource::createSourceToCache( SHADER_FILENAME, pps.toCString(), "r_", getResourceManager()).toCString(), &getResourceManager()); m_vblurPpline = m_r->createDrawQuadProgramPipeline(m_vblurFrag->getGlProgram()); // Set timestamps m_parameterUpdateTimestamp = getGlobTimestamp(); m_commonUboUpdateTimestamp = getGlobTimestamp(); }