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

Method NDKCamera

camera/texture-view/src/main/cpp/camera_manager.cpp:38–100  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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