Argus.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. /*
  2. * Copyright (c) 2016-2017, NVIDIA CORPORATION. All rights reserved.
  3. *
  4. * Redistribution and use in source and binary forms, with or without
  5. * modification, are permitted provided that the following conditions
  6. * are met:
  7. * * Redistributions of source code must retain the above copyright
  8. * notice, this list of conditions and the following disclaimer.
  9. * * Redistributions in binary form must reproduce the above copyright
  10. * notice, this list of conditions and the following disclaimer in the
  11. * documentation and/or other materials provided with the distribution.
  12. * * Neither the name of NVIDIA CORPORATION nor the names of its
  13. * contributors may be used to endorse or promote products derived
  14. * from this software without specific prior written permission.
  15. *
  16. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
  17. * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  18. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  19. * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  20. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  21. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  22. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  23. * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  24. * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  25. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  26. * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  27. */
  28. /**
  29. * @file
  30. * <b>Libargus API: Main Include File</b>
  31. *
  32. * @b Description: This is the main include file for libargus applications.
  33. */
  34. #ifndef _ARGUS_H
  35. #define _ARGUS_H
  36. /**
  37. * @defgroup LibargusAPI Libargus Camera API
  38. *
  39. * Libargus is an API for acquiring images and associated metadata from cameras.
  40. * The fundamental libargus operation is a capture:
  41. * acquiring an image from a sensor and processing it into a final output image.
  42. *
  43. * Currently, libargus is supported on Android and all Jetson Linux platforms.
  44. *
  45. * Libargus is designed to address a number of fundamental requirements:
  46. *
  47. * - Support for a wide variety of use cases (traditional photography, computational photography,
  48. * video, computer vision, and other application areas.)
  49. * To this end, libargus is a frame-based API; every capture is triggered by an explicit request that
  50. * specifies exactly how the capture is to be performed.
  51. *
  52. * - Support for multiple platforms, including L4T and Android.
  53. *
  54. * - Efficient and simple integration into applications and larger frameworks. In support of this,
  55. * libargus delivers images with EGLStreams, which are directly supported by other system components
  56. * such as OpenGL and Cuda, and which require no buffer copies during delivery to the consumer.
  57. *
  58. * - Expansive metadata along with each output image.
  59. *
  60. * - Support for multiple sensors, including both separate control over independent sensors and
  61. * access to synchronized multi-sensor configurations. (The latter are unsupported in the current
  62. * release. When support is added, it will be available on only some NVIDIA platforms.)
  63. *
  64. * - Version stability and extensibility, which are provided by unchanging virtual interfaces and
  65. * the ability for vendors to add specialized extension interfaces.
  66. *
  67. * Libargus provides functionality in a number of different areas:
  68. *
  69. * - Captures with a wide variety of settings.
  70. *
  71. * - Optional autocontrol (such as auto-exposure and auto-white-balance.)
  72. *
  73. * - Libraries that consume the EGLStream outputs in different ways; for example, jpeg encoding or
  74. * direct application access to the images.
  75. *
  76. * - Metadata delivery via both libargus events and EGLStream metadata.
  77. *
  78. * - Image post-processing such as noise reduction and edge sharpening.
  79. *
  80. * - Notification of errors, image acquisition start, and other events via synchronous event queues.
  81. *
  82. * Functionality not provided by libargus:
  83. *
  84. * - Auto-focus. (Planned to be added in a later release.)
  85. *
  86. * - Reprocessing of YUV images (such as that required by Android’s Zero Shutter Lag feature.)
  87. *
  88. * - Reprocessing of Bayer (raw) images. (Planned to be added in a later release.)
  89. *
  90. * @defgroup ArgusObjects Objects and Interfaces
  91. * This module provides a list of libargus objects and the interfaces that they support.
  92. * Children of objects in this list describe either child InterfaceProviders provided by
  93. * the object or specialized types of the object (ie. Event types).
  94. * @ingroup LibargusAPI
  95. *
  96. * @defgroup ArgusExtensions Extensions
  97. * This module provides a list of extensions currently available for libargus.
  98. * @ingroup LibargusAPI
  99. */
  100. /**
  101. * @ifnot SWDOCS_L4T <!-- Hides open-source doxy entries in L4T build.-->
  102. * @mainpage
  103. * Proceed to the \ref LibargusAPI module for libargus documentation.
  104. * @endif
  105. */
  106. #include <stddef.h>
  107. #include "Argus/UUID.h"
  108. #include "Argus/Types.h"
  109. #include "Argus/Stream.h"
  110. #include "Argus/BufferStream.h"
  111. #include "Argus/CameraDevice.h"
  112. #include "Argus/CameraProvider.h"
  113. #include "Argus/CaptureMetadata.h"
  114. #include "Argus/CaptureSession.h"
  115. #include "Argus/EGLImage.h"
  116. #include "Argus/EGLStream.h"
  117. #include "Argus/EGLSync.h"
  118. #include "Argus/Event.h"
  119. #include "Argus/EventProvider.h"
  120. #include "Argus/EventQueue.h"
  121. #include "Argus/Request.h"
  122. #include "Argus/Settings.h"
  123. #include "Argus/ReprocessInfo.h"
  124. #endif