void Set(const K &key, const V &value) { auto i = map.insert(std::make_pair(key, Item(value))); Item &item = i.first->second; item.old = false; if (!i.second) item.value = value; cond.broadcast(); }
void dev_stop_handler(int sig) { XCAM_UNUSED (sig); SmartLock locker (g_mutex); g_stop = true; g_cond.broadcast (); //exit(0); }
void MainDeviceManager::handle_buffer (const SmartPtr<VideoBuffer> &buf) { FPS_CALCULATION (fps_buf, 30); XCAM_OBJ_PROFILING_START; if (_enable_display) display_buf (buf); XCAM_OBJ_PROFILING_END("main_dev_manager_display", 30); if (!_save_file) return ; if ((_frame_count++ % _interval) != 0) return; if ((_frame_save != 0) && (_frame_count > _frame_save)) { SmartLock locker (g_mutex); g_stop = true; g_cond.broadcast (); return; } const VideoBufferInfo & frame_info = buf->get_video_info (); uint8_t *frame = buf->map (); if (frame == NULL) return; uint32_t size = 0; switch(frame_info.format) { case V4L2_PIX_FMT_NV12: // 420 case V4L2_PIX_FMT_NV21: size = XCAM_ALIGN_UP(frame_info.width, 2) * XCAM_ALIGN_UP(frame_info.height, 2) * 3 / 2; break; case V4L2_PIX_FMT_YUV422P: // 422 Planar case V4L2_PIX_FMT_YUYV: // 422 case V4L2_PIX_FMT_SBGGR10: case V4L2_PIX_FMT_SGBRG10: case V4L2_PIX_FMT_SGRBG10: case V4L2_PIX_FMT_SRGGB10: case V4L2_PIX_FMT_SBGGR12: case V4L2_PIX_FMT_SGBRG12: case V4L2_PIX_FMT_SGRBG12: case V4L2_PIX_FMT_SRGGB12: size = XCAM_ALIGN_UP(frame_info.width, 2) * XCAM_ALIGN_UP(frame_info.height, 2) * 2; break; case XCAM_PIX_FMT_RGBA64: size = XCAM_ALIGN_UP(frame_info.width, 2) * XCAM_ALIGN_UP(frame_info.height, 2) * 2 * 4; break; default: XCAM_LOG_ERROR ( "unknown v4l2 format(%s) in buffer handle", xcam_fourcc_to_string (frame_info.format)); return; } open_file (); if (!_file) { XCAM_LOG_ERROR ("open file failed"); return; } if (fwrite (frame, size, 1, _file) <= 0) { XCAM_LOG_WARNING ("write frame failed."); } }