XCamReturn CLBayer2RGBImageHandler::prepare_buffer_pool_video_info ( const VideoBufferInfo &input, VideoBufferInfo &output) { bool format_inited = output.init (_output_format, input.width, input.height); XCAM_FAIL_RETURN ( WARNING, format_inited, XCAM_RETURN_ERROR_PARAM, "CL image handler(%s) ouput format(%s) unsupported", get_name (), xcam_fourcc_to_string (_output_format)); return XCAM_RETURN_NO_ERROR; }
XCamReturn CLBayerBasicImageHandler::prepare_buffer_pool_video_info ( const VideoBufferInfo &input, VideoBufferInfo &output) { uint32_t format = XCAM_PIX_FMT_SGRBG16_planar; bool format_inited = output.init (format, input.width / 2 , input.height / 2); XCAM_FAIL_RETURN ( WARNING, format_inited, XCAM_RETURN_ERROR_PARAM, "CL image handler(%s) output format(%s) unsupported", get_name (), xcam_fourcc_to_string (format)); return XCAM_RETURN_NO_ERROR; }
XCamReturn FakePollThread::init_buffer_pool () { struct v4l2_format format; if (!_capture_dev.ptr () || _capture_dev->get_format (format) != XCAM_RETURN_NO_ERROR) { XCAM_LOG_ERROR ("Can't init buffer pool without format"); return XCAM_RETURN_ERROR_PARAM; } VideoBufferInfo info; info.init(format.fmt.pix.pixelformat, format.fmt.pix.width, format.fmt.pix.height, 0, 0, 0); #if HAVE_LIBDRM SmartPtr<DrmDisplay> drm_disp = DrmDisplay::instance (); _buf_pool = new DrmBoBufferPool (drm_disp); XCAM_ASSERT (_buf_pool.ptr ()); if (_buf_pool->set_video_info (info) && _buf_pool->reserve (DEFAULT_FPT_BUF_COUNT)) return XCAM_RETURN_NO_ERROR; #endif return XCAM_RETURN_ERROR_MEM; }
XCamReturn SVStream::create_buf_pool (uint32_t reserve_count) { XCAM_ASSERT (get_width () && get_height ()); XCAM_FAIL_RETURN ( ERROR, _module != SVModuleNone, XCAM_RETURN_ERROR_PARAM, "invalid module, please set module first"); VideoBufferInfo info; info.init (V4L2_PIX_FMT_NV12, get_width (), get_height ()); SmartPtr<BufferPool> pool; if (_module == SVModuleSoft) { pool = new SoftVideoBufAllocator (info); } else if (_module == SVModuleGLES) { #if HAVE_GLES pool = new GLVideoBufferPool (info); #endif } else if (_module == SVModuleVulkan) { #if HAVE_VULKAN XCAM_ASSERT (_vk_dev.ptr ()); pool = create_vk_buffer_pool (_vk_dev); XCAM_ASSERT (pool.ptr ()); pool->set_video_info (info); #endif } XCAM_ASSERT (pool.ptr ()); if (!pool->reserve (reserve_count)) { XCAM_LOG_ERROR ("create buffer pool failed"); return XCAM_RETURN_ERROR_MEM; } set_buf_pool (pool); return XCAM_RETURN_NO_ERROR; }
bool XCam3AAiqContext::setup_stats_pool (uint32_t bit_depth) { VideoBufferInfo info; info.init (XCAM_PIX_FMT_SGRBG16, _video_width, _video_height); _stats_pool = new X3aStatisticsQueue; XCAM_ASSERT (_stats_pool.ptr ()); _stats_pool->set_bit_depth (bit_depth); XCAM_FAIL_RETURN ( WARNING, _stats_pool->set_video_info (info), false, "3a stats set video info failed"); if (!_stats_pool->reserve (6)) { XCAM_LOG_WARNING ("init_3a_stats_pool failed to reserve stats buffer."); return false; } return true; }