diff options
author | Paul Kocialkowski <contact@paulk.fr> | 2013-07-30 23:12:56 +0200 |
---|---|---|
committer | Paul Kocialkowski <contact@paulk.fr> | 2013-07-30 23:12:56 +0200 |
commit | ed257f920e7477143c2fd6e0ec3c46aa770de20a (patch) | |
tree | 7bb1c048883b16f59f3dcd67e4f513292013cc1a | |
parent | 7599024c411984188e5d1881f7be78102fb4c409 (diff) | |
download | device_samsung_galaxys2-common-ed257f920e7477143c2fd6e0ec3c46aa770de20a.zip device_samsung_galaxys2-common-ed257f920e7477143c2fd6e0ec3c46aa770de20a.tar.gz device_samsung_galaxys2-common-ed257f920e7477143c2fd6e0ec3c46aa770de20a.tar.bz2 |
camera: Use frame size as returned by V4L2 to correct padding
Change-Id: I6d6154d4db468b809868b14bc84d669d168b413e
Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
-rw-r--r-- | camera/exynos_camera.c | 11 | ||||
-rw-r--r-- | camera/exynos_camera.h | 1 |
2 files changed, 9 insertions, 3 deletions
diff --git a/camera/exynos_camera.c b/camera/exynos_camera.c index 504cf4c..47d118d 100644 --- a/camera/exynos_camera.c +++ b/camera/exynos_camera.c @@ -1764,7 +1764,7 @@ int exynos_camera_preview(struct exynos_camera *exynos_camera) return -1; } - frame_size = (int) ((float) width * (float) height * format_bpp); + frame_size = exynos_camera->preview_frame_size; offset = index * frame_size; preview_data = (void *) ((int) exynos_camera->preview_memory->data + offset); @@ -1959,10 +1959,15 @@ int exynos_camera_preview_start(struct exynos_camera *exynos_camera) return -1; } - if (rc != frame_size) - ALOGE("%s: Frame size mismatch: %d/%d", __func__, frame_size, rc); + if (rc < frame_size) { + ALOGE("%s: problematic frame size: %d/%d", __func__, rc, frame_size); + return -1; + } } + frame_size = rc; + exynos_camera->preview_frame_size = frame_size; + if (exynos_camera->callbacks.request_memory != NULL) { fd = exynos_v4l2_find_fd(exynos_camera, 0); if (fd < 0) { diff --git a/camera/exynos_camera.h b/camera/exynos_camera.h index 7ba0e48..d730e4a 100644 --- a/camera/exynos_camera.h +++ b/camera/exynos_camera.h @@ -213,6 +213,7 @@ struct exynos_camera { struct preview_stream_ops *preview_window; camera_memory_t *preview_memory; int preview_buffers_count; + int preview_frame_size; int preview_params_set; // Recording |