cam.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. // Copyright 2015 Citra Emulator Project
  2. // Licensed under GPLv2 or any later version
  3. // Refer to the license.txt file included.
  4. #pragma once
  5. #include "common/common_types.h"
  6. namespace Service {
  7. namespace CAM {
  8. enum class Port : u8 {
  9. None = 0,
  10. Cam1 = 1,
  11. Cam2 = 2,
  12. Both = Cam1 | Cam2
  13. };
  14. enum class CameraSelect : u8 {
  15. None = 0,
  16. Out1 = 1,
  17. In1 = 2,
  18. Out2 = 4,
  19. In1Out1 = Out1 | In1,
  20. Out1Out2 = Out1 | Out2,
  21. In1Out2 = In1 | Out2,
  22. All = Out1 | In1 | Out2
  23. };
  24. enum class Effect : u8 {
  25. None = 0,
  26. Mono = 1,
  27. Sepia = 2,
  28. Negative = 3,
  29. Negafilm = 4,
  30. Sepia01 = 5
  31. };
  32. enum class Context : u8 {
  33. None = 0,
  34. A = 1,
  35. B = 2,
  36. Both = A | B
  37. };
  38. enum class Flip : u8 {
  39. None = 0,
  40. Horizontal = 1,
  41. Vertical = 2,
  42. Reverse = 3
  43. };
  44. enum class Size : u8 {
  45. VGA = 0,
  46. QVGA = 1,
  47. QQVGA = 2,
  48. CIF = 3,
  49. QCIF = 4,
  50. DS_LCD = 5,
  51. DS_LCDx4 = 6,
  52. CTR_TOP_LCD = 7,
  53. CTR_BOTTOM_LCD = QVGA
  54. };
  55. enum class FrameRate : u8 {
  56. Rate_15 = 0,
  57. Rate_15_To_5 = 1,
  58. Rate_15_To_2 = 2,
  59. Rate_10 = 3,
  60. Rate_8_5 = 4,
  61. Rate_5 = 5,
  62. Rate_20 = 6,
  63. Rate_20_To_5 = 7,
  64. Rate_30 = 8,
  65. Rate_30_To_5 = 9,
  66. Rate_15_To_10 = 10,
  67. Rate_20_To_10 = 11,
  68. Rate_30_To_10 = 12
  69. };
  70. enum class ShutterSoundType : u8 {
  71. Normal = 0,
  72. Movie = 1,
  73. MovieEnd = 2
  74. };
  75. enum class WhiteBalance : u8 {
  76. BalanceAuto = 0,
  77. Balance3200K = 1,
  78. Balance4150K = 2,
  79. Balance5200K = 3,
  80. Balance6000K = 4,
  81. Balance7000K = 5,
  82. BalanceMax = 6,
  83. BalanceNormal = BalanceAuto,
  84. BalanceTungsten = Balance3200K,
  85. BalanceWhiteFluorescentLight = Balance4150K,
  86. BalanceDaylight = Balance5200K,
  87. BalanceCloudy = Balance6000K,
  88. BalanceHorizon = Balance6000K,
  89. BalanceShade = Balance7000K
  90. };
  91. enum class PhotoMode : u8 {
  92. Normal = 0,
  93. Portrait = 1,
  94. Landscape = 2,
  95. Nightview = 3,
  96. Letter0 = 4
  97. };
  98. enum class LensCorrection : u8 {
  99. Off = 0,
  100. On70 = 1,
  101. On90 = 2,
  102. Dark = Off,
  103. Normal = On70,
  104. Bright = On90
  105. };
  106. enum class Contrast : u8 {
  107. Pattern01 = 1,
  108. Pattern02 = 2,
  109. Pattern03 = 3,
  110. Pattern04 = 4,
  111. Pattern05 = 5,
  112. Pattern06 = 6,
  113. Pattern07 = 7,
  114. Pattern08 = 8,
  115. Pattern09 = 9,
  116. Pattern10 = 10,
  117. Pattern11 = 11,
  118. Low = Pattern05,
  119. Normal = Pattern06,
  120. High = Pattern07
  121. };
  122. enum class OutputFormat : u8 {
  123. YUV422 = 0,
  124. RGB565 = 1
  125. };
  126. struct PackageParameterCameraSelect {
  127. CameraSelect camera;
  128. s8 exposure;
  129. WhiteBalance white_balance;
  130. s8 sharpness;
  131. bool auto_exposure;
  132. bool auto_white_balance;
  133. FrameRate frame_rate;
  134. PhotoMode photo_mode;
  135. Contrast contrast;
  136. LensCorrection lens_correction;
  137. bool noise_filter;
  138. u8 padding;
  139. s16 auto_exposure_window_x;
  140. s16 auto_exposure_window_y;
  141. s16 auto_exposure_window_width;
  142. s16 auto_exposure_window_height;
  143. s16 auto_white_balance_window_x;
  144. s16 auto_white_balance_window_y;
  145. s16 auto_white_balance_window_width;
  146. s16 auto_white_balance_window_height;
  147. };
  148. static_assert(sizeof(PackageParameterCameraSelect) == 28, "PackageParameterCameraSelect structure size is wrong");
  149. /// Initialize CAM service(s)
  150. void Init();
  151. /// Shutdown CAM service(s)
  152. void Shutdown();
  153. } // namespace CAM
  154. } // namespace Service