}
-static void __mmcamcorder_capability_dump(mmcam_device_capability_s *mmcam_capability)
+static bool __mmcamcorder_capability_is_fps_valid(int fps)
+{
+ int i = 0;
+ int valid_fps[] = {0, 7, 8, 15, 20, 24, 25, 30, 60, 90, 120}; /* supported FPS list by native API */
+
+ for (i = 0 ; i < G_N_ELEMENTS(valid_fps) ; i++) {
+ if (valid_fps[i] == fps) {
+ MMCAM_LOG_DEBUG("valid FPS[%d]", fps);
+ return true;
+ }
+ }
+
+ MMCAM_LOG_DEBUG("invalid FPS[%d]", fps);
+
+ return false;
+}
+
+
+static void __mmcamcorder_capability_check(mmcam_device_capability_s *mmcam_capability)
{
int device_index = 0;
int format_index = 0;
int resolution_index = 0;
+ int fps = 0;
int fps_index = 0;
+ int fps_valid_count = 0;
camera_device_capability_s *_capability = NULL;
camera_device_capability_format_s *_format = NULL;
camera_device_capability_resolution_s *_resolution = NULL;
MMCAM_LOG_DEBUG(" resolution[%02d] %04d x %04d, fps count[%d]", resolution_index,
_resolution->width, _resolution->height, _resolution->fps_list.count);
- for (fps_index = 0 ; fps_index < _resolution->fps_list.count ; fps_index++) {
- MMCAM_LOG_DEBUG(" fps[%02d] %d", fps_index,
- _resolution->fps_list.fps[fps_index]);
+ for (fps_index = 0, fps_valid_count = 0 ; fps_index < _resolution->fps_list.count ; fps_index++) {
+ fps = _resolution->fps_list.fps[fps_index];
+ if (__mmcamcorder_capability_is_fps_valid(fps)) {
+ MMCAM_LOG_DEBUG(" fps[%02d<-%02d] %d", fps_valid_count, fps_index, fps);
+ _resolution->fps_list.fps[fps_valid_count++] = fps;
+ } else {
+ MMCAM_LOG_DEBUG(" invalid fps[%02d] %d", fps_index, fps);
+ }
+ }
+
+ if (_resolution->fps_list.count != fps_valid_count) {
+ if (fps_valid_count != 0) {
+ MMCAM_LOG_DEBUG(" Update FPS count [%d] -> [%d]", _resolution->fps_list.count, fps_valid_count);
+ _resolution->fps_list.count = fps_valid_count;
+ } else {
+ MMCAM_LOG_DEBUG(" invalid fps found, but not updated.(no valid fps)");
+ }
}
}
}
return MM_ERROR_CAMCORDER_NOT_SUPPORTED;
}
- __mmcamcorder_capability_dump(new_mmcam_capability);
+ __mmcamcorder_capability_check(new_mmcam_capability);
hcamcorder->mmcam_capability = g_steal_pointer(&new_mmcam_capability);