diff options
author | Wojciech Bieganski <wbieganski@antmicro.com> | 2014-04-15 10:27:04 +0200 |
---|---|---|
committer | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2014-04-22 08:43:29 +0200 |
commit | 5af2ff07902429552029c36902d5639006c85cbd (patch) | |
tree | 76c6f44aceae376609a4dd1d14bac999e28aba3c | |
parent | adc6a443b7df188545c99cea1c3ebd5c965763b7 (diff) |
media: image from analog cameras is back to full speed
This commit restores the full framerate (25 FPS), after a drop to
16 FPS caused by a l4t-r16-r4 merge.
-rw-r--r-- | drivers/media/video/tegra_v4l2_camera.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/media/video/tegra_v4l2_camera.c b/drivers/media/video/tegra_v4l2_camera.c index e5cbb3a582dc..f4e33817241a 100644 --- a/drivers/media/video/tegra_v4l2_camera.c +++ b/drivers/media/video/tegra_v4l2_camera.c @@ -1178,6 +1178,13 @@ static int tegra_camera_capture_frame(struct tegra_camera_dev *pcdev) if (pcdev->active) tegra_camera_capture_setup(pcdev); } + + /* drop the first interlaced frame */ + if (IS_INTERLACED && (pcdev->num_frames == 0)) { + pcdev->num_frames++; + return err; + } + spin_lock_irq(&pcdev->videobuf_queue_lock); do_gettimeofday(&vb->v4l2_buf.timestamp); vb->v4l2_buf.field = pcdev->field; @@ -1186,11 +1193,8 @@ static int tegra_camera_capture_frame(struct tegra_camera_dev *pcdev) else if (port == TEGRA_CAMERA_PORT_CSI_B) vb->v4l2_buf.sequence = pcdev->sequence_b++; - if (IS_INTERLACED && pcdev->num_frames == 0) - /* if we're dealing with interlaced frames, tell V4L to remove the frame from the queue */ - vb2_buffer_done(vb, VB2_BUF_STATE_DEQUEUED); - else - vb2_buffer_done(vb, (err != 0) ? VB2_BUF_STATE_ERROR : VB2_BUF_STATE_DONE); + vb2_buffer_done(vb, (err != 0) ? VB2_BUF_STATE_ERROR : VB2_BUF_STATE_DONE); + list_del_init(&buf->queue); pcdev->num_frames++; |