MCPcopy Create free account
hub / github.com/android/ndk-samples / NDKCamera

Method NDKCamera

camera/basic/src/main/cpp/camera_manager.cpp:36–98  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

34static const int64_t kMaxExposureTime = 250000000;
35
36NDKCamera::NDKCamera()
37 : cameraMgr_(nullptr),
38 activeCameraId_(""),
39 cameraFacing_(ACAMERA_LENS_FACING_BACK),
40 cameraOrientation_(0),
41 outputContainer_(nullptr),
42 captureSessionState_(CaptureSessionState::MAX_STATE),
43 exposureTime_(static_cast<int64_t>(0)) {
44 valid_ = false;
45 requests_.resize(CAPTURE_REQUEST_COUNT);
46 memset(requests_.data(), 0, requests_.size() * sizeof(requests_[0]));
47 cameras_.clear();
48 cameraMgr_ = ACameraManager_create();
49 ASSERT(cameraMgr_, "Failed to create cameraManager");
50
51 // Pick up a back-facing camera to preview
52 EnumerateCamera();
53 ASSERT(activeCameraId_.size(), "Unknown ActiveCameraIdx");
54
55 // Create back facing camera device
56 CALL_MGR(openCamera(cameraMgr_, activeCameraId_.c_str(), GetDeviceListener(),
57 &cameras_[activeCameraId_].device_));
58
59 CALL_MGR(registerAvailabilityCallback(cameraMgr_, GetManagerListener()));
60
61 // Initialize camera controls(exposure time and sensitivity), pick
62 // up value of 2% * range + min as starting value (just a number, no magic)
63 ACameraMetadata* metadataObj;
64 CALL_MGR(getCameraCharacteristics(cameraMgr_, activeCameraId_.c_str(),
65 &metadataObj));
66 ACameraMetadata_const_entry val = {};
67 camera_status_t status = ACameraMetadata_getConstEntry(
68 metadataObj, ACAMERA_SENSOR_INFO_EXPOSURE_TIME_RANGE, &val);
69 if (status == ACAMERA_OK) {
70 exposureRange_.min_ = val.data.i64[0];
71 if (exposureRange_.min_ < kMinExposureTime) {
72 exposureRange_.min_ = kMinExposureTime;
73 }
74 exposureRange_.max_ = val.data.i64[1];
75 if (exposureRange_.max_ > kMaxExposureTime) {
76 exposureRange_.max_ = kMaxExposureTime;
77 }
78 exposureTime_ = exposureRange_.value(2);
79 } else {
80 LOGW("Unsupported ACAMERA_SENSOR_INFO_EXPOSURE_TIME_RANGE");
81 exposureRange_.min_ = exposureRange_.max_ = 0l;
82 exposureTime_ = 0l;
83 }
84 status = ACameraMetadata_getConstEntry(
85 metadataObj, ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE, &val);
86
87 if (status == ACAMERA_OK) {
88 sensitivityRange_.min_ = val.data.i32[0];
89 sensitivityRange_.max_ = val.data.i32[1];
90
91 sensitivity_ = sensitivityRange_.value(2);
92 } else {
93 LOGW("failed for ACAMERA_SENSOR_INFO_SENSITIVITY_RANGE");

Callers

nothing calls this directly

Calls 3

dataMethod · 0.80
resizeMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected