SLProject  4.3.020
A platform independent 3D computer graphics framework for desktop OS, Android, iOS and online in web browsers
SENSAndroidCameraUtils.h File Reference
#include <camera/NdkCameraManager.h>
#include <camera/NdkCameraError.h>
Include dependency graph for SENSAndroidCameraUtils.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

const char * GetErrorStr (camera_status_t err)
 
const char * GetTagStr (acamera_metadata_tag_t tag)
 
const char * GetFormatStr (int fmt)
 
void PrintMetadataTags (int32_t entries, const uint32_t *pTags)
 
void PrintLensFacing (ACameraMetadata_const_entry &lensData)
 
void PrintCameras (ACameraManager *cameraMgr)
 
void PrintCameraDeviceError (int err)
 
void PrintRequestMetadata (ACaptureRequest *req)
 

Function Documentation

◆ GetErrorStr()

const char* GetErrorStr ( camera_status_t  err)

Definition at line 75 of file SENSAndroidCameraUtils.cpp.

76 {
77  return GetPairStr<camera_status_t>(err, errorInfo);
78 }
static std::vector< ERROR_PAIR > errorInfo

◆ GetFormatStr()

const char* GetFormatStr ( int  fmt)

Definition at line 299 of file SENSAndroidCameraUtils.cpp.

299 { return GetPairStr<int>(fmt, formatInfo); }
static std::vector< FORMAT_PAIR > formatInfo

◆ GetTagStr()

const char* GetTagStr ( acamera_metadata_tag_t  tag)

Definition at line 282 of file SENSAndroidCameraUtils.cpp.

283 {
284  return GetPairStr<acamera_metadata_tag_t>(tag, tagInfo);
285 }
static std::vector< TAG_PAIR > tagInfo

◆ PrintCameraDeviceError()

void PrintCameraDeviceError ( int  err)

Definition at line 484 of file SENSAndroidCameraUtils.cpp.

485 {
486  LOGI("CameraDeviceError(%#x): %s", err, GetCameraDeviceErrorStr(err));
487 }
#define LOGI(...)
const char * GetCameraDeviceErrorStr(int err)

◆ PrintCameras()

void PrintCameras ( ACameraManager *  cameraMgr)

Definition at line 379 of file SENSAndroidCameraUtils.cpp.

380 {
381  if (!cmrMgr) return;
382 
383  ACameraIdList* cameraIds = nullptr;
384  camera_status_t status = ACameraManager_getCameraIdList(cmrMgr, &cameraIds);
385  LOGI("camera Status = %d, %s", status, GetErrorStr(status));
386 
387  for (int i = 0; i < cameraIds->numCameras; ++i)
388  {
389  const char* id = cameraIds->cameraIds[i];
390  LOGI("=====cameraId = %d, cameraName = %s=====", i, id);
391  ACameraMetadata* metadataObj;
392  ACameraManager_getCameraCharacteristics(cmrMgr, id, &metadataObj);
393 
394  int32_t count = 0;
395  const uint32_t* tags = nullptr;
396  ACameraMetadata_getAllTags(metadataObj, &count, &tags);
397 
398  for (int tagIdx = 0; tagIdx < count; ++tagIdx)
399  {
400  ACameraMetadata_const_entry val = {
401  0,
402  };
403  camera_status_t status =
404  ACameraMetadata_getConstEntry(metadataObj, tags[tagIdx], &val);
405  if (status != ACAMERA_OK)
406  {
407  LOGW("Unsupported Tag: %s",
408  GetTagStr(static_cast<acamera_metadata_tag_t>(tags[tagIdx])));
409  continue;
410  }
411 
412  PrintTagVal("Camera Tag:", val);
413 
414  if (ACAMERA_LENS_FACING == tags[tagIdx])
415  {
416  PrintLensFacing(val);
417  }
418  }
419  ACameraMetadata_free(metadataObj);
420  }
421 
422  ACameraManager_deleteCameraIdList(cameraIds);
423 }
#define LOGW(...)
void PrintLensFacing(ACameraMetadata_const_entry &lens)
const char * GetErrorStr(camera_status_t err)
void PrintTagVal(const char *printLabel, ACameraMetadata_const_entry &val)
const char * GetTagStr(acamera_metadata_tag_t tag)

◆ PrintLensFacing()

void PrintLensFacing ( ACameraMetadata_const_entry &  lensData)

Definition at line 313 of file SENSAndroidCameraUtils.cpp.

314 {
315  ASSERT(lens.tag == ACAMERA_LENS_FACING, "Wrong tag(%#x) of %s to %s", lens.tag, GetTagStr((acamera_metadata_tag_t)lens.tag), __FUNCTION__);
316  LOGI("LensFacing: tag(%#x), type(%d), count(%d), val(%#x)", lens.tag, lens.type, lens.count, lens.data.u8[0]);
317 }
#define ASSERT(cond, fmt,...)

◆ PrintMetadataTags()

void PrintMetadataTags ( int32_t  entries,
const uint32_t *  pTags 
)

Definition at line 301 of file SENSAndroidCameraUtils.cpp.

302 {
303  LOGI("MetadataTag (start):");
304  for (int32_t idx = 0; idx < entries; ++idx)
305  {
306  const char* name =
307  GetTagStr(static_cast<acamera_metadata_tag_t>(pTags[idx]));
308  LOGI("(%#08x) : %s", pTags[idx], name);
309  }
310  LOGI("MetadataTag (end)");
311 }

◆ PrintRequestMetadata()

void PrintRequestMetadata ( ACaptureRequest *  req)

Definition at line 425 of file SENSAndroidCameraUtils.cpp.

426 {
427  if (!req) return;
428  int32_t count;
429  const uint32_t* tags;
430  ACaptureRequest_getAllTags(req, &count, &tags);
431  for (int32_t idx = 0; idx < count; ++idx)
432  {
433  ACameraMetadata_const_entry val;
434  ACaptureRequest_getConstEntry(req, tags[idx], &val);
435  const char* name =
436  GetTagStr(static_cast<acamera_metadata_tag_t>(tags[idx]));
437 
438  for (int i = 0; i < val.count; ++i)
439  {
440  switch (val.type)
441  {
442  case ACAMERA_TYPE_INT32:
443  LOGI("Capture Tag %s: %08d", name, val.data.i32[i]);
444  break;
445  case ACAMERA_TYPE_BYTE:
446  LOGI("Capture Tag %s: %#08x", name, val.data.u8[i]);
447  break;
448  case ACAMERA_TYPE_INT64:
449  LOGI("Capture Tag %s: %" PRIu64, name, (int64_t)val.data.i64[i]);
450  break;
451  case ACAMERA_TYPE_FLOAT:
452  LOGI("Capture Tag %s: %f", name, val.data.f[i]);
453  break;
454  case ACAMERA_TYPE_DOUBLE:
455  LOGI("Capture Tag %s: %" PRIx64, name, val.data.i64[i]);
456  break;
457  case ACAMERA_TYPE_RATIONAL:
458  LOGI("Capture Tag %s: %08x, %08x", name, val.data.r[i].numerator, val.data.r[i].denominator);
459  break;
460  default:
461  ASSERT(false, "Unknown tag value type: %d", val.type);
462  }
463  }
464  }
465 }