PageRenderTime 52ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/libcamera/ExynosCamera.cpp

https://gitlab.com/SerenityS/android_hardware_samsung_slsi-cm_exynos5410
C++ | 1624 lines | 1250 code | 205 blank | 169 comment | 68 complexity | 5b37f0df44635e081cd1e41ba3f58967 MD5 | raw file
  1. /*
  2. * Copyright 2012, Samsung Electronics Co. LTD
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed toggle an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. /*!
  17. * \file ExynosCamera.cpp
  18. * \brief source file for CAMERA HAL MODULE
  19. * \author thun.hwang(thun.hwang@samsung.com)
  20. * \date 2010/06/03
  21. *
  22. * <b>Revision History: </b>
  23. * - 2011/12/31 : thun.hwang(thun.hwang@samsung.com) \n
  24. * Initial version
  25. *
  26. * - 2012/01/18 : Sangwoo, Park(sw5771.park@samsung.com) \n
  27. * Adjust Doxygen Document
  28. *
  29. * - 2012/02/01 : Sangwoo, Park(sw5771.park@samsung.com) \n
  30. * Adjust libv4l2
  31. * Adjust struct ExynosCameraInfo
  32. * External ISP feature
  33. *
  34. * - 2012/03/14 : sangwoo.park(sw5771.park@samsung.com) \n
  35. * Change file, class name to ExynosXXX.
  36. *
  37. * - 2012/08/01 : Pilsun, Jang(pilsun.jang@samsung.com) \n
  38. * Adjust Camera2.0 Driver
  39. */
  40. //#define LOG_NDEBUG 0
  41. #define LOG_TAG "ExynosCamera"
  42. #include <cutils/log.h>
  43. #include "ExynosCamera.h"
  44. ExynosCameraInfo::ExynosCameraInfo()
  45. {
  46. previewW = 2560;
  47. previewH = 1920;
  48. previewColorFormat = V4L2_PIX_FMT_NV21;
  49. previewBufPlane = 3;
  50. videoW = 1920;
  51. videoH = 1080;
  52. videoColorFormat = V4L2_PIX_FMT_NV12M;
  53. videoBufPlane = 3;
  54. pictureW = 2560;
  55. pictureH = 1920;
  56. pictureColorFormat = V4L2_PIX_FMT_YUYV;
  57. pictureBufPlane = 2;
  58. thumbnailW = 512;
  59. thumbnailH = 384;
  60. antiBandingList =
  61. ExynosCamera::ANTIBANDING_AUTO
  62. | ExynosCamera::ANTIBANDING_50HZ
  63. | ExynosCamera::ANTIBANDING_60HZ
  64. | ExynosCamera::ANTIBANDING_OFF
  65. ;
  66. antiBanding = ExynosCamera::ANTIBANDING_AUTO;
  67. effectList =
  68. ExynosCamera::EFFECT_NONE
  69. | ExynosCamera::EFFECT_MONO
  70. | ExynosCamera::EFFECT_NEGATIVE
  71. | ExynosCamera::EFFECT_SOLARIZE
  72. | ExynosCamera::EFFECT_SEPIA
  73. | ExynosCamera::EFFECT_POSTERIZE
  74. | ExynosCamera::EFFECT_WHITEBOARD
  75. | ExynosCamera::EFFECT_BLACKBOARD
  76. | ExynosCamera::EFFECT_AQUA;
  77. effect = ExynosCamera::EFFECT_NONE;
  78. flashModeList =
  79. ExynosCamera::FLASH_MODE_OFF
  80. | ExynosCamera::FLASH_MODE_AUTO
  81. | ExynosCamera::FLASH_MODE_ON
  82. | ExynosCamera::FLASH_MODE_RED_EYE
  83. | ExynosCamera::FLASH_MODE_TORCH;
  84. flashMode = ExynosCamera::FLASH_MODE_OFF;
  85. flashPreMode = ExynosCamera::FLASH_MODE_OFF;
  86. focusModeList =
  87. ExynosCamera::FOCUS_MODE_AUTO
  88. | ExynosCamera::FOCUS_MODE_INFINITY
  89. | ExynosCamera::FOCUS_MODE_MACRO
  90. | ExynosCamera::FOCUS_MODE_FIXED
  91. | ExynosCamera::FOCUS_MODE_EDOF
  92. | ExynosCamera::FOCUS_MODE_CONTINUOUS_VIDEO
  93. | ExynosCamera::FOCUS_MODE_CONTINUOUS_PICTURE
  94. | ExynosCamera::FOCUS_MODE_TOUCH;
  95. focusMode = ExynosCamera::FOCUS_MODE_AUTO;
  96. sceneModeList =
  97. ExynosCamera::SCENE_MODE_AUTO
  98. | ExynosCamera::SCENE_MODE_ACTION
  99. | ExynosCamera::SCENE_MODE_PORTRAIT
  100. | ExynosCamera::SCENE_MODE_LANDSCAPE
  101. | ExynosCamera::SCENE_MODE_NIGHT
  102. | ExynosCamera::SCENE_MODE_NIGHT_PORTRAIT
  103. | ExynosCamera::SCENE_MODE_THEATRE
  104. | ExynosCamera::SCENE_MODE_BEACH
  105. | ExynosCamera::SCENE_MODE_SNOW
  106. | ExynosCamera::SCENE_MODE_SUNSET
  107. | ExynosCamera::SCENE_MODE_STEADYPHOTO
  108. | ExynosCamera::SCENE_MODE_FIREWORKS
  109. | ExynosCamera::SCENE_MODE_SPORTS
  110. | ExynosCamera::SCENE_MODE_PARTY
  111. | ExynosCamera::SCENE_MODE_CANDLELIGHT;
  112. sceneMode = ExynosCamera::SCENE_MODE_AUTO;
  113. whiteBalanceList =
  114. ExynosCamera::WHITE_BALANCE_AUTO
  115. | ExynosCamera::WHITE_BALANCE_INCANDESCENT
  116. | ExynosCamera::WHITE_BALANCE_FLUORESCENT
  117. | ExynosCamera::WHITE_BALANCE_WARM_FLUORESCENT
  118. | ExynosCamera::WHITE_BALANCE_DAYLIGHT
  119. | ExynosCamera::WHITE_BALANCE_CLOUDY_DAYLIGHT
  120. | ExynosCamera::WHITE_BALANCE_TWILIGHT
  121. | ExynosCamera::WHITE_BALANCE_SHADE;
  122. whiteBalance = ExynosCamera::WHITE_BALANCE_AUTO;
  123. autoWhiteBalanceLockSupported = false;
  124. autoWhiteBalanceLock = false;
  125. rotation = 0;
  126. minExposure = -4;
  127. maxExposure = 4;
  128. exposure = 0;
  129. autoExposureLockSupported = false;
  130. autoExposureLock = false;
  131. fpsRange[0] = 1000;
  132. fpsRange[1] = 30000;
  133. fNumberNum = 12;
  134. fNumberDen = 10;
  135. focalLengthNum = 343;
  136. focalLengthDen = 100;
  137. apertureNum = 27;
  138. apertureDen = 10;
  139. supportVideoStabilization = false;
  140. applyVideoStabilization = false;
  141. videoStabilization = false;
  142. maxNumMeteringAreas = 0;
  143. maxNumDetectedFaces = 0;
  144. maxNumFocusAreas = 0;
  145. maxZoom = 0;
  146. hwZoomSupported = false;
  147. zoom = 0;
  148. gpsAltitude = 0;
  149. gpsLatitude = 0;
  150. gpsLongitude = 0;
  151. gpsTimestamp = 0;
  152. // Additional API default Value.
  153. angle = 0;
  154. antiShake = false;
  155. brightness = 0;
  156. contrast = ExynosCamera::CONTRAST_DEFAULT;
  157. gamma = false;
  158. hue = 2; // 2 is default;
  159. iso = 0;
  160. metering = ExynosCamera::METERING_MODE_CENTER;
  161. objectTracking = false;
  162. objectTrackingStart = false;
  163. saturation = 0;
  164. sharpness = 0;
  165. slowAE = false;
  166. touchAfStart = false;
  167. tdnr = false;
  168. odc = false;
  169. vtMode = 0;
  170. intelligentMode = 0;
  171. #ifdef SCALABLE_SENSOR
  172. scalableSensorStart = false;
  173. #endif
  174. focalLengthIn35mmLength = 31;
  175. autoFocusMacroPosition = 0;
  176. }
  177. ExynosCameraInfoM5M0::ExynosCameraInfoM5M0()
  178. {
  179. previewW = 1280;
  180. previewH = 720;
  181. previewColorFormat = V4L2_PIX_FMT_YVU420M;
  182. previewBufPlane = 4;
  183. videoW = 1280;
  184. videoH = 720;
  185. videoColorFormat = V4L2_PIX_FMT_NV12M;
  186. videoBufPlane = 3;
  187. pictureW = 1280;
  188. pictureH = 720;
  189. pictureColorFormat = V4L2_PIX_FMT_YUYV;
  190. pictureBufPlane = 2;
  191. thumbnailW = 512;
  192. thumbnailH = 384;
  193. antiBandingList = ExynosCamera::ANTIBANDING_OFF;
  194. antiBanding = ExynosCamera::ANTIBANDING_OFF;
  195. effectList =
  196. ExynosCamera::EFFECT_NONE
  197. | ExynosCamera::EFFECT_MONO
  198. | ExynosCamera::EFFECT_NEGATIVE
  199. //| ExynosCamera::EFFECT_SOLARIZE
  200. | ExynosCamera::EFFECT_SEPIA
  201. //| ExynosCamera::EFFECT_POSTERIZE
  202. //| ExynosCamera::EFFECT_WHITEBOARD
  203. //| ExynosCamera::EFFECT_BLACKBOARD
  204. | ExynosCamera::EFFECT_AQUA;
  205. effect = ExynosCamera::EFFECT_NONE;
  206. flashModeList =
  207. ExynosCamera::FLASH_MODE_OFF
  208. | ExynosCamera::FLASH_MODE_AUTO
  209. | ExynosCamera::FLASH_MODE_ON
  210. | ExynosCamera::FLASH_MODE_RED_EYE
  211. | ExynosCamera::FLASH_MODE_TORCH;
  212. flashMode = ExynosCamera::FLASH_MODE_OFF;
  213. focusModeList =
  214. ExynosCamera::FOCUS_MODE_AUTO
  215. | ExynosCamera::FOCUS_MODE_INFINITY
  216. | ExynosCamera::FOCUS_MODE_MACRO
  217. //| ExynosCamera::FOCUS_MODE_FIXED
  218. //| ExynosCamera::FOCUS_MODE_EDOF
  219. //| ExynosCamera::FOCUS_MODE_CONTINUOUS_VIDEO
  220. //| ExynosCamera::FOCUS_MODE_CONTINUOUS_PICTURE
  221. //| ExynosCamera::FOCUS_MODE_TOUCH
  222. ;
  223. focusMode = ExynosCamera::FOCUS_MODE_AUTO;
  224. sceneModeList =
  225. ExynosCamera::SCENE_MODE_AUTO
  226. //| ExynosCamera::SCENE_MODE_ACTION
  227. | ExynosCamera::SCENE_MODE_PORTRAIT
  228. | ExynosCamera::SCENE_MODE_LANDSCAPE
  229. | ExynosCamera::SCENE_MODE_NIGHT
  230. //| ExynosCamera::SCENE_MODE_NIGHT_PORTRAIT
  231. //| ExynosCamera::SCENE_MODE_THEATRE
  232. | ExynosCamera::SCENE_MODE_BEACH
  233. | ExynosCamera::SCENE_MODE_SNOW
  234. | ExynosCamera::SCENE_MODE_SUNSET
  235. //| ExynosCamera::SCENE_MODE_STEADYPHOTO
  236. | ExynosCamera::SCENE_MODE_FIREWORKS
  237. | ExynosCamera::SCENE_MODE_SPORTS
  238. | ExynosCamera::SCENE_MODE_PARTY
  239. | ExynosCamera::SCENE_MODE_CANDLELIGHT;
  240. sceneMode = ExynosCamera::SCENE_MODE_AUTO;
  241. whiteBalanceList =
  242. ExynosCamera::WHITE_BALANCE_AUTO
  243. | ExynosCamera::WHITE_BALANCE_INCANDESCENT
  244. | ExynosCamera::WHITE_BALANCE_FLUORESCENT
  245. //| ExynosCamera::WHITE_BALANCE_WARM_FLUORESCENT
  246. | ExynosCamera::WHITE_BALANCE_DAYLIGHT
  247. | ExynosCamera::WHITE_BALANCE_CLOUDY_DAYLIGHT
  248. //| ExynosCamera::WHITE_BALANCE_TWILIGHT
  249. //| ExynosCamera::WHITE_BALANCE_SHADE
  250. ;
  251. whiteBalance = ExynosCamera::WHITE_BALANCE_AUTO;
  252. autoWhiteBalanceLockSupported = false;
  253. autoWhiteBalanceLock = false;
  254. rotation = 0;
  255. minExposure = -4;
  256. maxExposure = 4;
  257. exposure = 0;
  258. autoExposureLockSupported = false;
  259. autoExposureLock = false;
  260. fpsRange[0] = 1000;
  261. fpsRange[1] = 30000;
  262. fNumberNum = 12;
  263. fNumberDen = 10;
  264. focalLengthNum = 343;
  265. focalLengthDen = 100;
  266. apertureNum = 27;
  267. apertureDen = 10;
  268. supportVideoStabilization = false;
  269. applyVideoStabilization = false;
  270. videoStabilization = false;
  271. maxNumMeteringAreas = 64;
  272. maxNumDetectedFaces = 16;
  273. maxNumFocusAreas = 2;
  274. maxZoom = ZOOM_LEVEL_MAX;
  275. hwZoomSupported = false;
  276. zoom = 0;
  277. gpsAltitude = 0;
  278. gpsLatitude = 0;
  279. gpsLongitude = 0;
  280. gpsTimestamp = 0;
  281. }
  282. ExynosCameraInfoS5K3H5::ExynosCameraInfoS5K3H5()
  283. {
  284. // previewW = 1920;
  285. // previewH = 1080;
  286. // previewW = 1920;
  287. // previewH = 1088;
  288. previewW = 1024;
  289. previewH = 768;
  290. // previewColorFormat = V4L2_PIX_FMT_YVU420M;
  291. previewColorFormat = V4L2_PIX_FMT_YUV420M;
  292. previewBufPlane = 4;
  293. // videoW = 1920;
  294. // videoH = 1080;
  295. // videoW = 1920;
  296. // videoH = 1088;
  297. videoW = 1024;
  298. videoH = 768;
  299. videoColorFormat = V4L2_PIX_FMT_NV12M;
  300. videoBufPlane = 3;
  301. pictureW = 3200;
  302. pictureH = 2400;
  303. pictureColorFormat = V4L2_PIX_FMT_YUYV;
  304. pictureBufPlane = 2;
  305. thumbnailW = 512;
  306. thumbnailH = 384;
  307. antiBandingList =
  308. ExynosCamera::ANTIBANDING_AUTO
  309. | ExynosCamera::ANTIBANDING_50HZ
  310. | ExynosCamera::ANTIBANDING_60HZ
  311. | ExynosCamera::ANTIBANDING_OFF
  312. ;
  313. antiBanding = ExynosCamera::ANTIBANDING_AUTO;
  314. effectList =
  315. ExynosCamera::EFFECT_NONE
  316. | ExynosCamera::EFFECT_MONO
  317. | ExynosCamera::EFFECT_NEGATIVE
  318. //| ExynosCamera::EFFECT_SOLARIZE
  319. | ExynosCamera::EFFECT_SEPIA
  320. //| ExynosCamera::EFFECT_POSTERIZE
  321. //| ExynosCamera::EFFECT_WHITEBOARD
  322. //| ExynosCamera::EFFECT_BLACKBOARD
  323. //| ExynosCamera::EFFECT_AQUA
  324. ;
  325. effect = ExynosCamera::EFFECT_NONE;
  326. flashModeList =
  327. ExynosCamera::FLASH_MODE_OFF
  328. | ExynosCamera::FLASH_MODE_AUTO
  329. | ExynosCamera::FLASH_MODE_ON
  330. //| ExynosCamera::FLASH_MODE_RED_EYE
  331. | ExynosCamera::FLASH_MODE_TORCH;
  332. flashMode = ExynosCamera::FLASH_MODE_OFF;
  333. focusModeList =
  334. ExynosCamera::FOCUS_MODE_AUTO
  335. | ExynosCamera::FOCUS_MODE_INFINITY
  336. | ExynosCamera::FOCUS_MODE_MACRO
  337. //| ExynosCamera::FOCUS_MODE_FIXED
  338. //| ExynosCamera::FOCUS_MODE_EDOF
  339. | ExynosCamera::FOCUS_MODE_CONTINUOUS_VIDEO
  340. | ExynosCamera::FOCUS_MODE_CONTINUOUS_PICTURE
  341. | ExynosCamera::FOCUS_MODE_TOUCH
  342. ;
  343. focusMode = ExynosCamera::FOCUS_MODE_AUTO;
  344. sceneModeList =
  345. ExynosCamera::SCENE_MODE_AUTO
  346. //| ExynosCamera::SCENE_MODE_ACTION
  347. | ExynosCamera::SCENE_MODE_PORTRAIT
  348. | ExynosCamera::SCENE_MODE_LANDSCAPE
  349. | ExynosCamera::SCENE_MODE_NIGHT
  350. //| ExynosCamera::SCENE_MODE_NIGHT_PORTRAIT
  351. //| ExynosCamera::SCENE_MODE_THEATRE
  352. | ExynosCamera::SCENE_MODE_BEACH
  353. | ExynosCamera::SCENE_MODE_SNOW
  354. | ExynosCamera::SCENE_MODE_SUNSET
  355. | ExynosCamera::SCENE_MODE_STEADYPHOTO
  356. | ExynosCamera::SCENE_MODE_FIREWORKS
  357. | ExynosCamera::SCENE_MODE_SPORTS
  358. | ExynosCamera::SCENE_MODE_PARTY
  359. | ExynosCamera::SCENE_MODE_CANDLELIGHT;
  360. sceneMode = ExynosCamera::SCENE_MODE_AUTO;
  361. whiteBalanceList =
  362. ExynosCamera::WHITE_BALANCE_AUTO
  363. | ExynosCamera::WHITE_BALANCE_INCANDESCENT
  364. | ExynosCamera::WHITE_BALANCE_FLUORESCENT
  365. //| ExynosCamera::WHITE_BALANCE_WARM_FLUORESCENT
  366. | ExynosCamera::WHITE_BALANCE_DAYLIGHT
  367. | ExynosCamera::WHITE_BALANCE_CLOUDY_DAYLIGHT
  368. //| ExynosCamera::WHITE_BALANCE_TWILIGHT
  369. //| ExynosCamera::WHITE_BALANCE_SHADE
  370. ;
  371. whiteBalance = ExynosCamera::WHITE_BALANCE_AUTO;
  372. autoWhiteBalanceLockSupported = true;
  373. autoWhiteBalanceLock = false;
  374. rotation = 0;
  375. minExposure = -4;
  376. maxExposure = 4;
  377. exposure = 0;
  378. autoExposureLockSupported = true;
  379. autoExposureLock = false;
  380. fpsRange[0] = 1000;
  381. fpsRange[1] = 30000;
  382. fNumberNum = 26;
  383. fNumberDen = 10;
  384. focalLengthNum = 9;
  385. focalLengthDen = 10;
  386. apertureNum = 27;
  387. apertureDen = 10;
  388. supportVideoStabilization = true;
  389. applyVideoStabilization = false;
  390. videoStabilization = false;
  391. maxNumMeteringAreas = 64;
  392. maxNumDetectedFaces = 16;
  393. maxNumFocusAreas = 2;
  394. maxZoom = ZOOM_LEVEL_MAX;
  395. hwZoomSupported = false;
  396. zoom = 0;
  397. gpsAltitude = 0;
  398. gpsLatitude = 0;
  399. gpsLongitude = 0;
  400. gpsTimestamp = 0;
  401. }
  402. ExynosCameraInfoS5K3H7::ExynosCameraInfoS5K3H7()
  403. {
  404. previewW = 1920;
  405. previewH = 1080;
  406. previewColorFormat = V4L2_PIX_FMT_YVU420M;
  407. previewBufPlane = 4;
  408. videoW = 1920;
  409. videoH = 1080;
  410. videoColorFormat = V4L2_PIX_FMT_NV12M;
  411. videoBufPlane = 3;
  412. pictureW = 3200;
  413. pictureH = 2400;
  414. pictureColorFormat = V4L2_PIX_FMT_YUYV;
  415. pictureBufPlane = 2;
  416. thumbnailW = 512;
  417. thumbnailH = 384;
  418. antiBandingList =
  419. ExynosCamera::ANTIBANDING_AUTO
  420. | ExynosCamera::ANTIBANDING_50HZ
  421. | ExynosCamera::ANTIBANDING_60HZ
  422. | ExynosCamera::ANTIBANDING_OFF
  423. ;
  424. antiBanding = ExynosCamera::ANTIBANDING_AUTO;
  425. effectList =
  426. ExynosCamera::EFFECT_NONE
  427. | ExynosCamera::EFFECT_MONO
  428. | ExynosCamera::EFFECT_NEGATIVE
  429. //| ExynosCamera::EFFECT_SOLARIZE
  430. | ExynosCamera::EFFECT_SEPIA
  431. //| ExynosCamera::EFFECT_POSTERIZE
  432. //| ExynosCamera::EFFECT_WHITEBOARD
  433. //| ExynosCamera::EFFECT_BLACKBOARD
  434. //| ExynosCamera::EFFECT_AQUA
  435. ;
  436. effect = ExynosCamera::EFFECT_NONE;
  437. flashModeList =
  438. ExynosCamera::FLASH_MODE_OFF
  439. | ExynosCamera::FLASH_MODE_AUTO
  440. | ExynosCamera::FLASH_MODE_ON
  441. //| ExynosCamera::FLASH_MODE_RED_EYE
  442. | ExynosCamera::FLASH_MODE_TORCH;
  443. flashMode = ExynosCamera::FLASH_MODE_OFF;
  444. focusModeList =
  445. ExynosCamera::FOCUS_MODE_AUTO
  446. | ExynosCamera::FOCUS_MODE_INFINITY
  447. | ExynosCamera::FOCUS_MODE_MACRO
  448. //| ExynosCamera::FOCUS_MODE_FIXED
  449. //| ExynosCamera::FOCUS_MODE_EDOF
  450. | ExynosCamera::FOCUS_MODE_CONTINUOUS_VIDEO
  451. | ExynosCamera::FOCUS_MODE_CONTINUOUS_PICTURE
  452. | ExynosCamera::FOCUS_MODE_TOUCH
  453. ;
  454. focusMode = ExynosCamera::FOCUS_MODE_AUTO;
  455. sceneModeList =
  456. ExynosCamera::SCENE_MODE_AUTO
  457. //| ExynosCamera::SCENE_MODE_ACTION
  458. | ExynosCamera::SCENE_MODE_PORTRAIT
  459. | ExynosCamera::SCENE_MODE_LANDSCAPE
  460. | ExynosCamera::SCENE_MODE_NIGHT
  461. //| ExynosCamera::SCENE_MODE_NIGHT_PORTRAIT
  462. //| ExynosCamera::SCENE_MODE_THEATRE
  463. | ExynosCamera::SCENE_MODE_BEACH
  464. | ExynosCamera::SCENE_MODE_SNOW
  465. | ExynosCamera::SCENE_MODE_SUNSET
  466. | ExynosCamera::SCENE_MODE_STEADYPHOTO
  467. | ExynosCamera::SCENE_MODE_FIREWORKS
  468. | ExynosCamera::SCENE_MODE_SPORTS
  469. | ExynosCamera::SCENE_MODE_PARTY
  470. | ExynosCamera::SCENE_MODE_CANDLELIGHT;
  471. sceneMode = ExynosCamera::SCENE_MODE_AUTO;
  472. whiteBalanceList =
  473. ExynosCamera::WHITE_BALANCE_AUTO
  474. | ExynosCamera::WHITE_BALANCE_INCANDESCENT
  475. | ExynosCamera::WHITE_BALANCE_FLUORESCENT
  476. //| ExynosCamera::WHITE_BALANCE_WARM_FLUORESCENT
  477. | ExynosCamera::WHITE_BALANCE_DAYLIGHT
  478. | ExynosCamera::WHITE_BALANCE_CLOUDY_DAYLIGHT
  479. //| ExynosCamera::WHITE_BALANCE_TWILIGHT
  480. //| ExynosCamera::WHITE_BALANCE_SHADE
  481. ;
  482. whiteBalance = ExynosCamera::WHITE_BALANCE_AUTO;
  483. autoWhiteBalanceLockSupported = true;
  484. autoWhiteBalanceLock = false;
  485. rotation = 0;
  486. minExposure = -4;
  487. maxExposure = 4;
  488. exposure = 0;
  489. autoExposureLockSupported = true;
  490. autoExposureLock = false;
  491. fpsRange[0] = 1000;
  492. fpsRange[1] = 30000;
  493. fNumberNum = 26;
  494. fNumberDen = 10;
  495. focalLengthNum = 9;
  496. focalLengthDen = 10;
  497. apertureNum = 27;
  498. apertureDen = 10;
  499. supportVideoStabilization = true;
  500. applyVideoStabilization = false;
  501. videoStabilization = false;
  502. maxNumMeteringAreas = 64;
  503. maxNumDetectedFaces = 16;
  504. maxNumFocusAreas = 2;
  505. maxZoom = ZOOM_LEVEL_MAX;
  506. hwZoomSupported = false;
  507. zoom = 0;
  508. gpsAltitude = 0;
  509. gpsLatitude = 0;
  510. gpsLongitude = 0;
  511. gpsTimestamp = 0;
  512. }
  513. ExynosCameraInfoS5K6A3::ExynosCameraInfoS5K6A3()
  514. {
  515. previewW = 1280;
  516. previewH = 960;
  517. previewColorFormat = V4L2_PIX_FMT_YVU420M;
  518. previewBufPlane = 4;
  519. videoW = 1280;
  520. videoH = 720;
  521. videoColorFormat = V4L2_PIX_FMT_NV12M;
  522. videoBufPlane = 3;
  523. pictureW = 1392;
  524. pictureH = 1392;
  525. pictureColorFormat = V4L2_PIX_FMT_YUYV;
  526. pictureBufPlane = 2;
  527. thumbnailW = 512;
  528. thumbnailH = 384;
  529. antiBandingList =
  530. ExynosCamera::ANTIBANDING_AUTO
  531. | ExynosCamera::ANTIBANDING_50HZ
  532. | ExynosCamera::ANTIBANDING_60HZ
  533. | ExynosCamera::ANTIBANDING_OFF
  534. ;
  535. antiBanding = ExynosCamera::ANTIBANDING_AUTO;
  536. effectList =
  537. ExynosCamera::EFFECT_NONE
  538. | ExynosCamera::EFFECT_MONO
  539. | ExynosCamera::EFFECT_NEGATIVE
  540. | ExynosCamera::EFFECT_SOLARIZE
  541. | ExynosCamera::EFFECT_SEPIA
  542. | ExynosCamera::EFFECT_POSTERIZE
  543. | ExynosCamera::EFFECT_WHITEBOARD
  544. | ExynosCamera::EFFECT_BLACKBOARD
  545. | ExynosCamera::EFFECT_AQUA
  546. ;
  547. effect = ExynosCamera::EFFECT_NONE;
  548. flashModeList =
  549. ExynosCamera::FLASH_MODE_OFF
  550. //| ExynosCamera::FLASH_MODE_AUTO
  551. //| ExynosCamera::FLASH_MODE_ON
  552. //| ExynosCamera::FLASH_MODE_RED_EYE
  553. //| ExynosCamera::FLASH_MODE_TORCH
  554. ;
  555. flashMode = ExynosCamera::FLASH_MODE_OFF;
  556. focusModeList =
  557. // ExynosCamera::FOCUS_MODE_AUTO
  558. ExynosCamera::FOCUS_MODE_INFINITY
  559. //| ExynosCamera::FOCUS_MODE_MACRO
  560. //| ExynosCamera::FOCUS_MODE_FIXED
  561. //| ExynosCamera::FOCUS_MODE_EDOF
  562. //| ExynosCamera::FOCUS_MODE_CONTINUOUS_VIDEO
  563. //| ExynosCamera::FOCUS_MODE_CONTINUOUS_PICTURE
  564. //| ExynosCamera::FOCUS_MODE_TOUCH
  565. ;
  566. focusMode = ExynosCamera::FOCUS_MODE_INFINITY;
  567. sceneModeList =
  568. ExynosCamera::SCENE_MODE_AUTO
  569. | ExynosCamera::SCENE_MODE_ACTION
  570. | ExynosCamera::SCENE_MODE_PORTRAIT
  571. | ExynosCamera::SCENE_MODE_LANDSCAPE
  572. | ExynosCamera::SCENE_MODE_NIGHT
  573. | ExynosCamera::SCENE_MODE_NIGHT_PORTRAIT
  574. | ExynosCamera::SCENE_MODE_THEATRE
  575. | ExynosCamera::SCENE_MODE_BEACH
  576. | ExynosCamera::SCENE_MODE_SNOW
  577. | ExynosCamera::SCENE_MODE_SUNSET
  578. | ExynosCamera::SCENE_MODE_STEADYPHOTO
  579. | ExynosCamera::SCENE_MODE_FIREWORKS
  580. | ExynosCamera::SCENE_MODE_SPORTS
  581. | ExynosCamera::SCENE_MODE_PARTY
  582. | ExynosCamera::SCENE_MODE_CANDLELIGHT;
  583. sceneMode = ExynosCamera::SCENE_MODE_AUTO;
  584. whiteBalanceList =
  585. ExynosCamera::WHITE_BALANCE_AUTO
  586. | ExynosCamera::WHITE_BALANCE_INCANDESCENT
  587. | ExynosCamera::WHITE_BALANCE_FLUORESCENT
  588. //| ExynosCamera::WHITE_BALANCE_WARM_FLUORESCENT
  589. | ExynosCamera::WHITE_BALANCE_DAYLIGHT
  590. | ExynosCamera::WHITE_BALANCE_CLOUDY_DAYLIGHT
  591. //| ExynosCamera::WHITE_BALANCE_TWILIGHT
  592. //| ExynosCamera::WHITE_BALANCE_SHADE
  593. ;
  594. whiteBalance = ExynosCamera::WHITE_BALANCE_AUTO;
  595. autoWhiteBalanceLockSupported = true;
  596. autoWhiteBalanceLock = false;
  597. rotation = 0;
  598. minExposure = -4;
  599. maxExposure = 4;
  600. exposure = 0;
  601. autoExposureLockSupported = true;
  602. autoExposureLock = false;
  603. fpsRange[0] = 1000;
  604. fpsRange[1] = 30000;
  605. fNumberNum = 245;
  606. fNumberDen = 100;
  607. focalLengthNum = 185;
  608. focalLengthDen = 100;
  609. apertureNum = 75;
  610. apertureDen = 100;
  611. supportVideoStabilization = false;
  612. applyVideoStabilization = false;
  613. videoStabilization = false;
  614. maxNumMeteringAreas = 64;
  615. maxNumDetectedFaces = 16;
  616. maxNumFocusAreas = 0;
  617. maxZoom = ZOOM_LEVEL_MAX;
  618. hwZoomSupported = false;
  619. zoom = 0;
  620. gpsAltitude = 0;
  621. gpsLatitude = 0;
  622. gpsLongitude = 0;
  623. gpsTimestamp = 0;
  624. }
  625. ExynosCameraInfoS5K6B2::ExynosCameraInfoS5K6B2()
  626. {
  627. previewW = 1920;
  628. previewH = 1080;
  629. previewColorFormat = V4L2_PIX_FMT_NV21M;
  630. previewBufPlane = 3;
  631. videoW = 1920;
  632. videoH = 1080;
  633. videoColorFormat = V4L2_PIX_FMT_NV12M;
  634. videoBufPlane = 3;
  635. pictureW = 1920;
  636. pictureH = 1080;
  637. pictureColorFormat = V4L2_PIX_FMT_YUYV;
  638. pictureBufPlane = 2;
  639. ispW = 1920;
  640. ispH = 1080;
  641. thumbnailW = 512;
  642. thumbnailH = 384;
  643. antiBandingList =
  644. ExynosCamera::ANTIBANDING_AUTO
  645. | ExynosCamera::ANTIBANDING_50HZ
  646. | ExynosCamera::ANTIBANDING_60HZ
  647. | ExynosCamera::ANTIBANDING_OFF
  648. ;
  649. antiBanding = ExynosCamera::ANTIBANDING_AUTO;
  650. effectList =
  651. ExynosCamera::EFFECT_NONE
  652. | ExynosCamera::EFFECT_MONO
  653. | ExynosCamera::EFFECT_NEGATIVE
  654. //| ExynosCamera::EFFECT_SOLARIZE
  655. | ExynosCamera::EFFECT_SEPIA
  656. | ExynosCamera::EFFECT_POSTERIZE
  657. //| ExynosCamera::EFFECT_WHITEBOARD
  658. //| ExynosCamera::EFFECT_BLACKBOARD
  659. | ExynosCamera::EFFECT_AQUA
  660. ;
  661. effect = ExynosCamera::EFFECT_NONE;
  662. flashModeList =
  663. ExynosCamera::FLASH_MODE_OFF
  664. //| ExynosCamera::FLASH_MODE_AUTO
  665. //| ExynosCamera::FLASH_MODE_ON
  666. //| ExynosCamera::FLASH_MODE_RED_EYE
  667. //| ExynosCamera::FLASH_MODE_TORCH
  668. ;
  669. flashMode = ExynosCamera::FLASH_MODE_OFF;
  670. focusModeList =
  671. // ExynosCamera::FOCUS_MODE_AUTO
  672. ExynosCamera::FOCUS_MODE_INFINITY
  673. //| ExynosCamera::FOCUS_MODE_MACRO
  674. //| ExynosCamera::FOCUS_MODE_FIXED
  675. //| ExynosCamera::FOCUS_MODE_EDOF
  676. //| ExynosCamera::FOCUS_MODE_CONTINUOUS_VIDEO
  677. //| ExynosCamera::FOCUS_MODE_CONTINUOUS_PICTURE
  678. //| ExynosCamera::FOCUS_MODE_TOUCH
  679. ;
  680. focusMode = ExynosCamera::FOCUS_MODE_INFINITY;
  681. sceneModeList =
  682. ExynosCamera::SCENE_MODE_AUTO
  683. | ExynosCamera::SCENE_MODE_ACTION
  684. | ExynosCamera::SCENE_MODE_PORTRAIT
  685. | ExynosCamera::SCENE_MODE_LANDSCAPE
  686. | ExynosCamera::SCENE_MODE_NIGHT
  687. | ExynosCamera::SCENE_MODE_NIGHT_PORTRAIT
  688. | ExynosCamera::SCENE_MODE_THEATRE
  689. | ExynosCamera::SCENE_MODE_BEACH
  690. | ExynosCamera::SCENE_MODE_SNOW
  691. | ExynosCamera::SCENE_MODE_SUNSET
  692. | ExynosCamera::SCENE_MODE_STEADYPHOTO
  693. | ExynosCamera::SCENE_MODE_FIREWORKS
  694. | ExynosCamera::SCENE_MODE_SPORTS
  695. | ExynosCamera::SCENE_MODE_PARTY
  696. | ExynosCamera::SCENE_MODE_CANDLELIGHT
  697. ;
  698. sceneMode = ExynosCamera::SCENE_MODE_AUTO;
  699. whiteBalanceList =
  700. ExynosCamera::WHITE_BALANCE_AUTO
  701. | ExynosCamera::WHITE_BALANCE_INCANDESCENT
  702. | ExynosCamera::WHITE_BALANCE_FLUORESCENT
  703. //| ExynosCamera::WHITE_BALANCE_WARM_FLUORESCENT
  704. | ExynosCamera::WHITE_BALANCE_DAYLIGHT
  705. | ExynosCamera::WHITE_BALANCE_CLOUDY_DAYLIGHT
  706. //| ExynosCamera::WHITE_BALANCE_TWILIGHT
  707. //| ExynosCamera::WHITE_BALANCE_SHADE
  708. ;
  709. whiteBalance = ExynosCamera::WHITE_BALANCE_AUTO;
  710. autoWhiteBalanceLockSupported = true;
  711. autoWhiteBalanceLock = false;
  712. rotation = 0;
  713. minExposure = -4;
  714. maxExposure = 4;
  715. exposure = 0;
  716. autoExposureLockSupported = true;
  717. autoExposureLock = false;
  718. fpsRange[0] = 4000;
  719. fpsRange[1] = 30000;
  720. fNumberNum = 245;
  721. fNumberDen = 100;
  722. focalLengthNum = 185;
  723. focalLengthDen = 100;
  724. apertureNum = 245;
  725. apertureDen = 100;
  726. supportVideoStabilization = false;
  727. applyVideoStabilization = false;
  728. videoStabilization = false;
  729. maxNumMeteringAreas = 32;
  730. maxNumDetectedFaces = 16;
  731. maxNumFocusAreas = 0;
  732. maxZoom = ZOOM_LEVEL_MAX;
  733. hwZoomSupported = false;
  734. zoom = 0;
  735. gpsAltitude = 0;
  736. gpsLatitude = 0;
  737. gpsLongitude = 0;
  738. gpsTimestamp = 0;
  739. /* Additional API default Value. */
  740. metering = ExynosCamera::METERING_MODE_CENTER;
  741. focalLengthIn35mmLength = 27;
  742. }
  743. ExynosCameraInfoS5K4E5::ExynosCameraInfoS5K4E5()
  744. {
  745. previewW = 1920;
  746. previewH = 1080;
  747. previewColorFormat = V4L2_PIX_FMT_NV21M;
  748. previewBufPlane = 3;
  749. videoW = 1920;
  750. videoH = 1080;
  751. videoColorFormat = V4L2_PIX_FMT_NV12M;
  752. videoBufPlane = 3;
  753. pictureW = 2560;
  754. pictureH = 1920;
  755. pictureColorFormat = V4L2_PIX_FMT_YUYV;
  756. pictureBufPlane = 2;
  757. thumbnailW = 512;
  758. thumbnailH = 384;
  759. ispW = 1920;
  760. ispH = 1440;
  761. antiBandingList =
  762. ExynosCamera::ANTIBANDING_AUTO
  763. | ExynosCamera::ANTIBANDING_50HZ
  764. | ExynosCamera::ANTIBANDING_60HZ
  765. | ExynosCamera::ANTIBANDING_OFF
  766. ;
  767. antiBanding = ExynosCamera::ANTIBANDING_AUTO;
  768. effectList =
  769. ExynosCamera::EFFECT_NONE
  770. | ExynosCamera::EFFECT_MONO
  771. | ExynosCamera::EFFECT_NEGATIVE
  772. //| ExynosCamera::EFFECT_SOLARIZE
  773. | ExynosCamera::EFFECT_SEPIA
  774. //| ExynosCamera::EFFECT_POSTERIZE
  775. //| ExynosCamera::EFFECT_WHITEBOARD
  776. //| ExynosCamera::EFFECT_BLACKBOARD
  777. //| ExynosCamera::EFFECT_AQUA
  778. ;
  779. effect = ExynosCamera::EFFECT_NONE;
  780. flashModeList =
  781. ExynosCamera::FLASH_MODE_OFF
  782. | ExynosCamera::FLASH_MODE_AUTO
  783. | ExynosCamera::FLASH_MODE_ON
  784. //| ExynosCamera::FLASH_MODE_RED_EYE
  785. | ExynosCamera::FLASH_MODE_TORCH;
  786. flashMode = ExynosCamera::FLASH_MODE_OFF;
  787. focusModeList =
  788. ExynosCamera::FOCUS_MODE_AUTO
  789. | ExynosCamera::FOCUS_MODE_INFINITY
  790. | ExynosCamera::FOCUS_MODE_MACRO
  791. //| ExynosCamera::FOCUS_MODE_FIXED
  792. //| ExynosCamera::FOCUS_MODE_EDOF
  793. | ExynosCamera::FOCUS_MODE_CONTINUOUS_VIDEO
  794. | ExynosCamera::FOCUS_MODE_CONTINUOUS_PICTURE
  795. | ExynosCamera::FOCUS_MODE_TOUCH
  796. | ExynosCamera::FOCUS_MODE_CONTINUOUS_PICTURE_MACRO
  797. ;
  798. focusMode = ExynosCamera::FOCUS_MODE_AUTO;
  799. sceneModeList =
  800. ExynosCamera::SCENE_MODE_AUTO
  801. //| ExynosCamera::SCENE_MODE_ACTION
  802. | ExynosCamera::SCENE_MODE_PORTRAIT
  803. | ExynosCamera::SCENE_MODE_LANDSCAPE
  804. | ExynosCamera::SCENE_MODE_NIGHT
  805. //| ExynosCamera::SCENE_MODE_NIGHT_PORTRAIT
  806. //| ExynosCamera::SCENE_MODE_THEATRE
  807. | ExynosCamera::SCENE_MODE_BEACH
  808. | ExynosCamera::SCENE_MODE_SNOW
  809. | ExynosCamera::SCENE_MODE_SUNSET
  810. | ExynosCamera::SCENE_MODE_STEADYPHOTO
  811. | ExynosCamera::SCENE_MODE_FIREWORKS
  812. | ExynosCamera::SCENE_MODE_SPORTS
  813. | ExynosCamera::SCENE_MODE_PARTY
  814. | ExynosCamera::SCENE_MODE_CANDLELIGHT;
  815. sceneMode = ExynosCamera::SCENE_MODE_AUTO;
  816. whiteBalanceList =
  817. ExynosCamera::WHITE_BALANCE_AUTO
  818. | ExynosCamera::WHITE_BALANCE_INCANDESCENT
  819. | ExynosCamera::WHITE_BALANCE_FLUORESCENT
  820. //| ExynosCamera::WHITE_BALANCE_WARM_FLUORESCENT
  821. | ExynosCamera::WHITE_BALANCE_DAYLIGHT
  822. | ExynosCamera::WHITE_BALANCE_CLOUDY_DAYLIGHT
  823. //| ExynosCamera::WHITE_BALANCE_TWILIGHT
  824. //| ExynosCamera::WHITE_BALANCE_SHADE
  825. ;
  826. whiteBalance = ExynosCamera::WHITE_BALANCE_AUTO;
  827. autoWhiteBalanceLockSupported = true;
  828. autoWhiteBalanceLock = false;
  829. rotation = 0;
  830. minExposure = -4;
  831. maxExposure = 4;
  832. exposure = 0;
  833. autoExposureLockSupported = true;
  834. autoExposureLock = false;
  835. fpsRange[0] = 1000;
  836. fpsRange[1] = 30000;
  837. fNumberNum = 12;
  838. fNumberDen = 10;
  839. focalLengthNum = 343;
  840. focalLengthDen = 100;
  841. apertureNum = 27;
  842. apertureDen = 10;
  843. supportVideoStabilization = true;
  844. applyVideoStabilization = false;
  845. videoStabilization = false;
  846. maxNumMeteringAreas = 64;
  847. maxNumDetectedFaces = 16;
  848. maxNumFocusAreas = 2;
  849. maxZoom = ZOOM_LEVEL_MAX;
  850. hwZoomSupported = false;
  851. zoom = 0;
  852. gpsAltitude = 0;
  853. gpsLatitude = 0;
  854. gpsLongitude = 0;
  855. gpsTimestamp = 0;
  856. }
  857. ExynosCameraInfoIMX135::ExynosCameraInfoIMX135()
  858. {
  859. previewW = 1920;
  860. previewH = 1080;
  861. previewColorFormat = V4L2_PIX_FMT_NV21M;
  862. previewBufPlane = 3;
  863. videoW = 1920;
  864. videoH = 1080;
  865. ispW = 1920;
  866. ispH = 1080;
  867. videoColorFormat = V4L2_PIX_FMT_NV12M;
  868. videoBufPlane = 3;
  869. pictureW = 4128;
  870. pictureH = 3096;
  871. pictureColorFormat = V4L2_PIX_FMT_YUYV;
  872. pictureBufPlane = 2;
  873. thumbnailW = 512;
  874. thumbnailH = 384;
  875. antiBandingList =
  876. ExynosCamera::ANTIBANDING_AUTO
  877. | ExynosCamera::ANTIBANDING_50HZ
  878. | ExynosCamera::ANTIBANDING_60HZ
  879. | ExynosCamera::ANTIBANDING_OFF
  880. ;
  881. antiBanding = ExynosCamera::ANTIBANDING_AUTO;
  882. effectList =
  883. ExynosCamera::EFFECT_NONE
  884. | ExynosCamera::EFFECT_MONO
  885. | ExynosCamera::EFFECT_NEGATIVE
  886. //| ExynosCamera::EFFECT_SOLARIZE
  887. | ExynosCamera::EFFECT_SEPIA
  888. | ExynosCamera::EFFECT_POSTERIZE
  889. //| ExynosCamera::EFFECT_WHITEBOARD
  890. //| ExynosCamera::EFFECT_BLACKBOARD
  891. | ExynosCamera::EFFECT_AQUA
  892. ;
  893. effect = ExynosCamera::EFFECT_NONE;
  894. flashModeList =
  895. ExynosCamera::FLASH_MODE_OFF
  896. | ExynosCamera::FLASH_MODE_AUTO
  897. | ExynosCamera::FLASH_MODE_ON
  898. //| ExynosCamera::FLASH_MODE_RED_EYE
  899. | ExynosCamera::FLASH_MODE_TORCH;
  900. flashMode = ExynosCamera::FLASH_MODE_OFF;
  901. focusModeList =
  902. ExynosCamera::FOCUS_MODE_AUTO
  903. //| ExynosCamera::FOCUS_MODE_INFINITY
  904. | ExynosCamera::FOCUS_MODE_MACRO
  905. //| ExynosCamera::FOCUS_MODE_FIXED
  906. //| ExynosCamera::FOCUS_MODE_EDOF
  907. | ExynosCamera::FOCUS_MODE_CONTINUOUS_VIDEO
  908. | ExynosCamera::FOCUS_MODE_CONTINUOUS_PICTURE
  909. | ExynosCamera::FOCUS_MODE_TOUCH
  910. ;
  911. focusMode = ExynosCamera::FOCUS_MODE_AUTO;
  912. sceneModeList =
  913. ExynosCamera::SCENE_MODE_AUTO
  914. | ExynosCamera::SCENE_MODE_ACTION
  915. | ExynosCamera::SCENE_MODE_PORTRAIT
  916. | ExynosCamera::SCENE_MODE_LANDSCAPE
  917. | ExynosCamera::SCENE_MODE_NIGHT
  918. | ExynosCamera::SCENE_MODE_NIGHT_PORTRAIT
  919. | ExynosCamera::SCENE_MODE_THEATRE
  920. | ExynosCamera::SCENE_MODE_BEACH
  921. | ExynosCamera::SCENE_MODE_SNOW
  922. | ExynosCamera::SCENE_MODE_SUNSET
  923. | ExynosCamera::SCENE_MODE_STEADYPHOTO
  924. | ExynosCamera::SCENE_MODE_FIREWORKS
  925. | ExynosCamera::SCENE_MODE_SPORTS
  926. | ExynosCamera::SCENE_MODE_PARTY
  927. | ExynosCamera::SCENE_MODE_CANDLELIGHT;
  928. sceneMode = ExynosCamera::SCENE_MODE_AUTO;
  929. whiteBalanceList =
  930. ExynosCamera::WHITE_BALANCE_AUTO
  931. | ExynosCamera::WHITE_BALANCE_INCANDESCENT
  932. | ExynosCamera::WHITE_BALANCE_FLUORESCENT
  933. //| ExynosCamera::WHITE_BALANCE_WARM_FLUORESCENT
  934. | ExynosCamera::WHITE_BALANCE_DAYLIGHT
  935. | ExynosCamera::WHITE_BALANCE_CLOUDY_DAYLIGHT
  936. //| ExynosCamera::WHITE_BALANCE_TWILIGHT
  937. //| ExynosCamera::WHITE_BALANCE_SHADE
  938. ;
  939. whiteBalance = ExynosCamera::WHITE_BALANCE_AUTO;
  940. autoWhiteBalanceLockSupported = true;
  941. autoWhiteBalanceLock = false;
  942. rotation = 0;
  943. minExposure = -4;
  944. maxExposure = 4;
  945. exposure = 0;
  946. autoExposureLockSupported = true;
  947. autoExposureLock = false;
  948. fpsRange[0] = 7000;
  949. fpsRange[1] = 30000;
  950. fNumberNum = 22;
  951. fNumberDen = 10;
  952. focalLengthNum = 420;
  953. focalLengthDen = 100;
  954. apertureNum = 227;
  955. apertureDen = 100;
  956. supportVideoStabilization = true;
  957. applyVideoStabilization = false;
  958. videoStabilization = false;
  959. maxNumMeteringAreas = 32;
  960. maxNumDetectedFaces = 16;
  961. maxNumFocusAreas = 2;
  962. maxZoom = ZOOM_LEVEL_MAX;
  963. hwZoomSupported = false;
  964. zoom = 0;
  965. gpsAltitude = 0;
  966. gpsLatitude = 0;
  967. gpsLongitude = 0;
  968. gpsTimestamp = 0;
  969. /* Additional API default Value. */
  970. metering = ExynosCamera::METERING_MODE_CENTER;
  971. focalLengthIn35mmLength = 31;
  972. }
  973. ExynosCameraInfoIMX135Fake::ExynosCameraInfoIMX135Fake()
  974. {
  975. previewW = 1920;
  976. previewH = 1080;
  977. previewColorFormat = V4L2_PIX_FMT_NV21M;
  978. videoW = 1920;
  979. videoH = 1080;
  980. pictureW = 4128;
  981. pictureH = 3096;
  982. videoColorFormat = V4L2_PIX_FMT_NV12M;
  983. ispW = 4128;
  984. ispH = 3096;
  985. pictureColorFormat = V4L2_PIX_FMT_YUYV;
  986. thumbnailW = 512;
  987. thumbnailH = 384;
  988. }
  989. ExynosCameraInfoS5K6B2Fake::ExynosCameraInfoS5K6B2Fake()
  990. {
  991. previewW = 1280;
  992. previewH = 960;
  993. previewColorFormat = V4L2_PIX_FMT_NV21M;
  994. videoW = 1920;
  995. videoH = 1080;
  996. videoColorFormat = V4L2_PIX_FMT_NV12M;
  997. pictureW = 1920;
  998. pictureH = 1080;
  999. pictureColorFormat = V4L2_PIX_FMT_YUYV;
  1000. thumbnailW = 512;
  1001. thumbnailH = 384;
  1002. }
  1003. ExynosCameraInfoS5K4E5Fake::ExynosCameraInfoS5K4E5Fake()
  1004. {
  1005. previewW = 1920;
  1006. previewH = 1080;
  1007. // previewColorFormat = V4L2_PIX_FMT_YVU420M;
  1008. previewColorFormat = V4L2_PIX_FMT_NV21M;
  1009. videoW = 1920;
  1010. videoH = 1080;
  1011. videoColorFormat = V4L2_PIX_FMT_NV12M;
  1012. ispW = 2560;
  1013. ispH = 1920;
  1014. pictureW = 2560;
  1015. pictureH = 1920;
  1016. pictureColorFormat = V4L2_PIX_FMT_YUYV;
  1017. thumbnailW = 512;
  1018. thumbnailH = 384;
  1019. }
  1020. //////////////////////////////////////////////////
  1021. #define PFX_NODE "/dev/video"
  1022. #define M5MOLS_ENTITY_NAME "M5MOLS 5-001f"
  1023. #define PFX_SUBDEV_ENTITY_MIPI_CSIS "s5p-mipi-csis"
  1024. #define PFX_SUBDEV_ENTITY_FLITE "flite-subdev"
  1025. #define PFX_SUBDEV_ENTITY_GSC_CAP "gsc-cap-subdev"
  1026. #define PFX_VIDEODEV_ENTITY_FLITE "exynos-fimc-lite"
  1027. #define PFX_VIDEODEV_ENTITY_GSC_CAP "exynos-gsc"
  1028. #define MEDIA_DEV_INTERNAL_ISP "/dev/media2"
  1029. #define MEDIA_DEV_EXTERNAL_ISP "/dev/media1"
  1030. #define ISP_VD_NODE_OFFSET (40) //INTERNAL_ISP
  1031. #define FLITE_VD_NODE_OFFSET (36) //External ISP
  1032. #define VIDEO_NODE_PREVIEW_ID (3)
  1033. #define VIDEO_NODE_RECODING_ID (2)
  1034. #define VIDEO_NODE_SNAPSHOT_ID (1)
  1035. #define ISP_SENSOR_MAX_ENTITIES 1
  1036. #define ISP_SENSOR_PAD_SOURCE_FRONT 0
  1037. #define ISP_SENSOR_PADS_NUM 1
  1038. #define ISP_FRONT_MAX_ENTITIES 1
  1039. #define ISP_FRONT_PAD_SINK 0
  1040. #define ISP_FRONT_PAD_SOURCE_BACK 1
  1041. #define ISP_FRONT_PAD_SOURCE_BAYER 2
  1042. #define ISP_FRONT_PAD_SOURCE_SCALERC 3
  1043. #define ISP_FRONT_PADS_NUM 4
  1044. #define ISP_BACK_MAX_ENTITIES 1
  1045. #define ISP_BACK_PAD_SINK 0
  1046. #define ISP_BACK_PAD_SOURCE_3DNR 1
  1047. #define ISP_BACK_PAD_SOURCE_SCALERP 2
  1048. #define ISP_BACK_PADS_NUM 3
  1049. #define ISP_MODULE_NAME "exynos5-fimc-is"
  1050. #define ISP_SENSOR_ENTITY_NAME "exynos5-fimc-is-sensor"
  1051. #define ISP_FRONT_ENTITY_NAME "exynos5-fimc-is-front"
  1052. #define ISP_BACK_ENTITY_NAME "exynos5-fimc-is-back"
  1053. #define ISP_VIDEO_BAYER_NAME "exynos5-fimc-is-bayer"
  1054. #define ISP_VIDEO_SCALERC_NAME "exynos5-fimc-is-scalerc"
  1055. #define ISP_VIDEO_3DNR_NAME "exynos5-fimc-is-3dnr"
  1056. #define ISP_VIDEO_SCALERP_NAME "exynos5-fimc-is-scalerp"
  1057. #define MIPI_NUM 1
  1058. #define FLITE_NUM 1
  1059. #define GSC_NUM 0
  1060. #define PFX_SUBDEV_NODE "/dev/v4l-subdev"
  1061. #define V4L2_CAMERA_MEMORY_TYPE V4L2_MEMORY_DMABUF /* V4L2_MEMORY_USERPTR */
  1062. /*
  1063. * V 4 L 2 F I M C E X T E N S I O N S
  1064. *
  1065. */
  1066. #define V4L2_CID_ROTATION (V4L2_CID_PRIVATE_BASE + 0)
  1067. #define V4L2_CID_PADDR_Y (V4L2_CID_PRIVATE_BASE + 1)
  1068. #define V4L2_CID_PADDR_CB (V4L2_CID_PRIVATE_BASE + 2)
  1069. #define V4L2_CID_PADDR_CR (V4L2_CID_PRIVATE_BASE + 3)
  1070. #define V4L2_CID_PADDR_CBCR (V4L2_CID_PRIVATE_BASE + 4)
  1071. #define V4L2_CID_STREAM_PAUSE (V4L2_CID_PRIVATE_BASE + 53)
  1072. #define V4L2_CID_CAM_JPEG_MAIN_SIZE (V4L2_CID_PRIVATE_BASE + 32)
  1073. #define V4L2_CID_CAM_JPEG_MAIN_OFFSET (V4L2_CID_PRIVATE_BASE + 33)
  1074. #define V4L2_CID_CAM_JPEG_THUMB_SIZE (V4L2_CID_PRIVATE_BASE + 34)
  1075. #define V4L2_CID_CAM_JPEG_THUMB_OFFSET (V4L2_CID_PRIVATE_BASE + 35)
  1076. #define V4L2_CID_CAM_JPEG_POSTVIEW_OFFSET (V4L2_CID_PRIVATE_BASE + 36)
  1077. #define V4L2_CID_CAM_JPEG_QUALITY (V4L2_CID_PRIVATE_BASE + 37)
  1078. #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U')
  1079. /* FOURCC for FIMC specific */
  1080. #define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y')
  1081. #define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6')
  1082. #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
  1083. #define V4L2_PIX_FMT_NV12T v4l2_fourcc('T', 'V', '1', '2')
  1084. ///////////////////////////////////////////////////
  1085. // Google Official API : Camera.Parameters
  1086. // http://developer.android.com/reference/android/hardware/Camera.Parameters.html
  1087. ///////////////////////////////////////////////////
  1088. /* For v4l2_ioctls interfaces */
  1089. int ExynosCamera::get_pixel_depth(uint32_t fmt)
  1090. {
  1091. int depth = 0;
  1092. switch (fmt) {
  1093. case V4L2_PIX_FMT_JPEG:
  1094. depth = 8;
  1095. break;
  1096. case V4L2_PIX_FMT_NV12:
  1097. case V4L2_PIX_FMT_NV21:
  1098. case V4L2_PIX_FMT_YUV420:
  1099. case V4L2_PIX_FMT_YVU420M:
  1100. case V4L2_PIX_FMT_YUV420M:
  1101. case V4L2_PIX_FMT_NV12M:
  1102. case V4L2_PIX_FMT_NV12MT:
  1103. depth = 12;
  1104. break;
  1105. case V4L2_PIX_FMT_RGB565:
  1106. case V4L2_PIX_FMT_YUYV:
  1107. case V4L2_PIX_FMT_YVYU:
  1108. case V4L2_PIX_FMT_UYVY:
  1109. case V4L2_PIX_FMT_VYUY:
  1110. case V4L2_PIX_FMT_NV16:
  1111. case V4L2_PIX_FMT_NV61:
  1112. case V4L2_PIX_FMT_YUV422P:
  1113. case V4L2_PIX_FMT_SBGGR10:
  1114. case V4L2_PIX_FMT_SBGGR12:
  1115. case V4L2_PIX_FMT_SBGGR16:
  1116. depth = 16;
  1117. break;
  1118. case V4L2_PIX_FMT_RGB32:
  1119. depth = 32;
  1120. break;
  1121. default:
  1122. CLOGE("ERR(%s):Get depth failed(format : %d)", __func__, fmt);
  1123. break;
  1124. }
  1125. return depth;
  1126. }
  1127. int ExynosCamera::cam_int_s_fmt(node_info_t *node)
  1128. {
  1129. struct v4l2_format v4l2_fmt;
  1130. if (node->planes <= 0) {
  1131. CLOGE("ERR(%s):S_FMT, Out of bound : Number of element plane(%d)", __func__, node->planes);
  1132. return -1;
  1133. }
  1134. CLOGD("[%s] (%d) type %d, %d x %d, format %d", __func__, __LINE__, node->type, node->width, node->height, node->format);
  1135. memset(&v4l2_fmt, 0, sizeof(struct v4l2_format));
  1136. v4l2_fmt.type = node->type;
  1137. v4l2_fmt.fmt.pix_mp.width = node->width;
  1138. v4l2_fmt.fmt.pix_mp.height = node->height;
  1139. v4l2_fmt.fmt.pix_mp.pixelformat = node->format;
  1140. v4l2_fmt.fmt.pix_mp.field = V4L2_FIELD_ANY;
  1141. if (exynos_v4l2_s_fmt(node->fd, &v4l2_fmt) < 0) {
  1142. CLOGE("ERR(%s):exynos_v4l2_s_fmt fail", __func__);
  1143. return -1;
  1144. }
  1145. return 0;
  1146. }
  1147. int ExynosCamera::cam_int_reqbufs(node_info_t *node)
  1148. {
  1149. struct v4l2_requestbuffers req;
  1150. int ret;
  1151. req.count = node->buffers;
  1152. req.type = node->type;
  1153. req.memory = node->memory;
  1154. CLOGD("[%s] (%d) fd %d, count %d, type %d, memory %d", __func__, __LINE__, node->fd, req.count, req.type, req.memory);
  1155. ret = exynos_v4l2_reqbufs(node->fd, &req);
  1156. if (ret < 0) {
  1157. CLOGE("ERR(%s):VIDIOC_REQBUFS (fd:%d) failed (%d)", __func__,node->fd, ret);
  1158. return -1;
  1159. }
  1160. return req.count;
  1161. }
  1162. int ExynosCamera::cam_int_clrbufs(node_info_t * node)
  1163. {
  1164. struct v4l2_requestbuffers req;
  1165. int ret;
  1166. req.count = 0;
  1167. req.type = node->type;
  1168. req.memory = node->memory;
  1169. CLOGD("[%s] (%d) fd %d, count %d, type %d, memory %d", __func__, __LINE__, node->fd, req.count, req.type, req.memory);
  1170. ret = exynos_v4l2_reqbufs(node->fd, &req);
  1171. if (ret < 0) {
  1172. CLOGE("ERR(%s):VIDIOC_REQBUFS(0) (fd:%d) failed (%d)", __func__,node->fd, ret);
  1173. return -1;
  1174. }
  1175. return req.count;
  1176. }
  1177. int ExynosCamera::cam_int_qbuf(node_info_t *node, int index)
  1178. {
  1179. struct v4l2_buffer v4l2_buf;
  1180. struct v4l2_plane planes[VIDEO_MAX_PLANES];
  1181. int i;
  1182. int ret = 0;
  1183. v4l2_buf.m.planes = planes;
  1184. v4l2_buf.type = node->type;
  1185. v4l2_buf.memory = node->memory;
  1186. v4l2_buf.index = index;
  1187. v4l2_buf.length = node->planes;
  1188. for(i = 0; i < node->planes; i++){
  1189. if (node->memory == V4L2_MEMORY_DMABUF)
  1190. v4l2_buf.m.planes[i].m.fd = (int)(node->buffer[index].fd.extFd[i]);
  1191. else if (node->memory == V4L2_MEMORY_USERPTR)
  1192. v4l2_buf.m.planes[i].m.userptr = (unsigned long)(node->buffer[index].virt.extP[i]);
  1193. else {
  1194. CLOGE("ERR(%s):invalid node->memory(%d)", __func__, node->memory);
  1195. return -1;
  1196. }
  1197. v4l2_buf.m.planes[i].length = (unsigned long)(node->buffer[index].size.extS[i]);
  1198. }
  1199. ret = exynos_v4l2_qbuf(node->fd, &v4l2_buf);
  1200. if (ret < 0) {
  1201. CLOGE("ERR(%s):exynos_v4l2_qbuf failed (index:%d)(ret:%d)", __func__, index, ret);
  1202. return -1;
  1203. }
  1204. return ret;
  1205. }
  1206. int ExynosCamera::cam_int_m2m_qbuf(node_info_t *srcNode, int srcIndex, node_info_t *ctlNode, int ctlIndex)
  1207. {
  1208. struct v4l2_buffer v4l2_buf;
  1209. struct v4l2_plane planes[VIDEO_MAX_PLANES];
  1210. int i;
  1211. int ret = 0;
  1212. v4l2_buf.m.planes = planes;
  1213. v4l2_buf.type = ctlNode->type;
  1214. v4l2_buf.memory = srcNode->memory;
  1215. v4l2_buf.index = ctlIndex;
  1216. v4l2_buf.length = srcNode->planes;
  1217. for(i = 0; i < srcNode->planes; i++){
  1218. if (srcNode->memory == V4L2_MEMORY_DMABUF) {
  1219. v4l2_buf.m.planes[i].m.fd = (int)(srcNode->buffer[srcIndex].fd.extFd[i]);
  1220. } else if (srcNode->memory == V4L2_MEMORY_USERPTR) {
  1221. v4l2_buf.m.planes[i].m.userptr = (unsigned long)(srcNode->buffer[srcIndex].virt.extP[i]);
  1222. } else {
  1223. CLOGE("ERR(%s):invalid node->memory(%d)", __func__, srcNode->memory);
  1224. return -1;
  1225. }
  1226. v4l2_buf.m.planes[i].length = (unsigned long)(srcNode->buffer[srcIndex].size.extS[i]);
  1227. }
  1228. ret = exynos_v4l2_qbuf(ctlNode->fd, &v4l2_buf);
  1229. if (ret < 0) {
  1230. CLOGE("ERR(%s):exynos_v4l2_qbuf failed (srcIndex:%d)(ret:%d)", __func__, srcIndex, ret);
  1231. return -1;
  1232. }
  1233. return ret;
  1234. }
  1235. int ExynosCamera::cam_int_m2m_qbuf_for_3a0(node_info_t *srcNode, int srcIndex, node_info_t *ctlNode, int ctlIndex, ExynosBuffer tempMeta)
  1236. {
  1237. struct v4l2_buffer v4l2_buf;
  1238. struct v4l2_plane planes[VIDEO_MAX_PLANES];
  1239. int i;
  1240. int ret = 0;
  1241. v4l2_buf.m.planes = planes;
  1242. v4l2_buf.type = ctlNode->type;
  1243. v4l2_buf.memory = srcNode->memory;
  1244. v4l2_buf.index = ctlIndex;
  1245. v4l2_buf.length = srcNode->planes;
  1246. for (i = 0; i < srcNode->planes; i++) {
  1247. if (srcNode->memory == V4L2_MEMORY_DMABUF) {
  1248. v4l2_buf.m.planes[i].m.fd = (int)(srcNode->buffer[srcIndex].fd.extFd[i]);
  1249. } else if (srcNode->memory == V4L2_MEMORY_USERPTR) {
  1250. v4l2_buf.m.planes[i].m.userptr = (unsigned long)(srcNode->buffer[srcIndex].virt.extP[i]);
  1251. } else {
  1252. CLOGE("ERR(%s):invalid node->memory(%d)", __func__, srcNode->memory);
  1253. return -1;
  1254. }
  1255. v4l2_buf.m.planes[i].length = (unsigned long)(srcNode->buffer[srcIndex].size.extS[i]);
  1256. }
  1257. if (srcNode->memory == V4L2_MEMORY_DMABUF) {
  1258. v4l2_buf.m.planes[v4l2_buf.length - 1].m.fd = (int)(tempMeta.fd.extFd[v4l2_buf.length - 1]);
  1259. } else if (srcNode->memory == V4L2_MEMORY_USERPTR) {
  1260. v4l2_buf.m.planes[v4l2_buf.length - 1].m.userptr = (unsigned long)(tempMeta.virt.extP[v4l2_buf.length - 1]);
  1261. } else {
  1262. CLOGE("ERR(%s):invalid meta(%d)", __func__, srcNode->memory);
  1263. return -1;
  1264. }
  1265. ret = exynos_v4l2_qbuf(ctlNode->fd, &v4l2_buf);
  1266. if (ret < 0) {
  1267. CLOGE("ERR(%s):exynos_v4l2_qbuf failed (srcIndex:%d)(ret:%d)", __func__, srcIndex, ret);
  1268. return -1;
  1269. }
  1270. return ret;
  1271. }
  1272. int ExynosCamera::cam_int_m2m_qbuf_for_3a1(node_info_t *srcNode, int srcIndex, node_info_t *ctlNode, int ctlIndex, ExynosBuffer tempMeta)
  1273. {
  1274. struct v4l2_buffer v4l2_buf;
  1275. struct v4l2_plane planes[VIDEO_MAX_PLANES];
  1276. int i;
  1277. int ret = 0;
  1278. v4l2_buf.m.planes = planes;
  1279. v4l2_buf.type = ctlNode->type;
  1280. v4l2_buf.memory = srcNode->memory;
  1281. v4l2_buf.index = ctlIndex;
  1282. v4l2_buf.length = srcNode->planes;
  1283. for (i = 0; i < srcNode->planes; i++) {
  1284. if (srcNode->memory == V4L2_MEMORY_DMABUF) {
  1285. v4l2_buf.m.planes[i].m.fd = (int)(srcNode->buffer[srcIndex].fd.extFd[i]);
  1286. } else if (srcNode->memory == V4L2_MEMORY_USERPTR) {
  1287. v4l2_buf.m.planes[i].m.userptr = (unsigned long)(srcNode->buffer[srcIndex].virt.extP[i]);
  1288. } else {
  1289. CLOGE("ERR(%s):invalid node->memory(%d)", __func__, srcNode->memory);
  1290. return -1;
  1291. }
  1292. v4l2_buf.m.planes[i].length = (unsigned long)(srcNode->buffer[srcIndex].size.extS[i]);
  1293. }
  1294. if (srcNode->memory == V4L2_MEMORY_DMABUF) {
  1295. v4l2_buf.m.planes[v4l2_buf.length - 1].m.fd = (int)(tempMeta.fd.extFd[v4l2_buf.length - 1]);
  1296. } else if (srcNode->memory == V4L2_MEMORY_USERPTR) {
  1297. v4l2_buf.m.planes[v4l2_buf.length - 1].m.userptr = (unsigned long)(tempMeta.virt.extP[v4l2_buf.length - 1]);
  1298. } else {
  1299. CLOGE("ERR(%s):invalid meta(%d)", __func__, srcNode->memory);
  1300. return -1;
  1301. }
  1302. ret = exynos_v4l2_qbuf(ctlNode->fd, &v4l2_buf);
  1303. if (ret < 0) {
  1304. CLOGE("ERR(%s):exynos_v4l2_qbuf failed (srcIndex:%d)(ret:%d)", __func__, srcIndex, ret);
  1305. return -1;
  1306. }
  1307. return ret;
  1308. }
  1309. int ExynosCamera::cam_int_streamon(node_info_t *node)
  1310. {
  1311. enum v4l2_buf_type type = node->type;
  1312. int ret;
  1313. CLOGD("[%s] (%d) fd %d, type %d", __func__, __LINE__, node->fd, (int)type);
  1314. ret = exynos_v4l2_streamon(node->fd, type);
  1315. if (ret < 0) {
  1316. CLOGE("ERR(%s):VIDIOC_STREAMON failed (%d)", __func__, ret);
  1317. return -1;
  1318. }
  1319. return ret;
  1320. }
  1321. int ExynosCamera::cam_int_streamoff(node_info_t *node)
  1322. {
  1323. enum v4l2_buf_type type = node->type;
  1324. int ret;
  1325. CLOGD("[%s] (%d) fd %d, type %d", __func__, __LINE__, node->fd, (int)type);
  1326. ret = exynos_v4l2_streamoff(node->fd, type);
  1327. if (ret < 0) {
  1328. CLOGE("ERR(%s):VIDIOC_STREAMOFF failed (%d)", __func__, ret);
  1329. return -1;
  1330. }
  1331. return ret;
  1332. }
  1333. #ifdef USE_CAMERA_ESD_RESET
  1334. #define CLEAR(x) memset(&(x), 0, sizeof(x))
  1335. int ExynosCamera::polling(int node_fd)
  1336. {
  1337. struct pollfd events;
  1338. /* 50 msec * 100 = 5sec */
  1339. int cnt = 100;
  1340. long sec = 50; /* 50 msec */
  1341. int ret = 0;
  1342. int pollRet = 0;
  1343. events.fd = node_fd;
  1344. events.events = POLLIN | POLLRDNORM | POLLOUT | POLLWRNORM | POLLERR;
  1345. events.revents = 0;
  1346. while (cnt--) {
  1347. pollRet = poll(&events, 1, sec);
  1348. if (pollRet < 0) {
  1349. ret = -1;
  1350. break;
  1351. } else if (0 < pollRet) {
  1352. if (events.revents & POLLIN) {
  1353. break;
  1354. } else if (events.revents & POLLERR) {
  1355. ret = -1;
  1356. break;
  1357. }
  1358. }
  1359. }
  1360. if (ret < 0 || cnt <= 0) {
  1361. CLOGE("ERR(%s):[esdreset] poll[%d], pollRet(%d) event(0x%x), cnt(%d)",
  1362. __func__, node_fd, pollRet, events.revents, cnt);
  1363. if (cnt <= 0)
  1364. ret = -1;
  1365. }
  1366. return ret;
  1367. }
  1368. #endif
  1369. int ExynosCamera::cam_int_dqbuf(node_info_t *node)
  1370. {
  1371. struct v4l2_buffer v4l2_buf;
  1372. struct v4l2_plane planes[VIDEO_MAX_PLANES];
  1373. int ret;
  1374. v4l2_buf.type = node->type;
  1375. v4l2_buf.memory = node->memory;
  1376. v4l2_buf.m.planes = planes;
  1377. v4l2_buf.length = node->planes;
  1378. ret = exynos_v4l2_dqbuf(node->fd, &v4l2_buf);
  1379. if (ret < 0) {
  1380. if (ret != -EAGAIN)
  1381. CLOGE("ERR(%s):VIDIOC_DQBUF failed (%d)", __func__, ret);
  1382. return ret;
  1383. }
  1384. #ifdef USE_FOR_DTP
  1385. if (v4l2_buf.flags & V4L2_BUF_FLAG_ERROR) {
  1386. CLOGE("ERR(%s):VIDIOC_DQBUF returned with error (%d)", __func__, V4L2_BUF_FLAG_ERROR);
  1387. return -1;
  1388. }
  1389. #endif
  1390. return v4l2_buf.index;
  1391. }
  1392. int ExynosCamera::cam_int_s_input(node_info_t *node, int index)
  1393. {
  1394. int ret;
  1395. CLOGD("[%s] (%d) fd %d, index %d", __func__, __LINE__, node->fd, index);
  1396. ret = exynos_v4l2_s_input(node->fd, index);
  1397. if (ret < 0)
  1398. CLOGE("ERR(%s):VIDIOC_S_INPUT failed (%d)", __func__, ret);
  1399. return ret;
  1400. }
  1401. int ExynosCamera::cam_int_querybuf(node_info_t *stream)
  1402. {
  1403. struct v4l2_buffer v4l2_buf;
  1404. struct v4l2_plane planes[VIDEO_MAX_PLANES];
  1405. int i, plane_index, ret;
  1406. for(i = 0; i < stream->buffers; i++) {
  1407. v4l2_buf.type = stream->type;
  1408. v4l2_buf.memory = stream->memory;
  1409. v4l2_buf.index = i;
  1410. v4l2_buf.m.planes = planes;
  1411. v4l2_buf.length = stream->planes; // this is for multi-planar
  1412. ret = ioctl(stream->fd, VIDIOC_QUERYBUF, &v4l2_buf);
  1413. if (ret < 0)
  1414. CLOGE("ERR(%s):VIDIOC_QUERYBUF failed (%d)", __func__, ret);
  1415. /*
  1416. for (plane_index = 0; plane_index < stream->planes; plane_index++) {
  1417. // remember for munmap()
  1418. stream->buffer[i].length[plane_index] = v4l2_buf.m.planes[plane_index].length;