diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2014-03-04 05:28:11 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-03-11 05:56:38 -0400 |
commit | 1a17948184a3320e0bb0aab561112211d2e9b7a8 (patch) | |
tree | a25e6526939a67a4bde8017a1b2db76981fd17be /drivers/media/usb | |
parent | 0647064293d745720fc62e2edc7734fa8af06adf (diff) |
[media] pwc: do not decompress the image unless the state is DONE
There is no point in trying to decompress a captured frame unless
the buffer state is OK. It won't be used in any other state, and
in fact the contents of the buffer might well be corrupt.
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media/usb')
-rw-r--r-- | drivers/media/usb/pwc/pwc-if.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/media/usb/pwc/pwc-if.c b/drivers/media/usb/pwc/pwc-if.c index 1a27096b3f91..84a6720b1d00 100644 --- a/drivers/media/usb/pwc/pwc-if.c +++ b/drivers/media/usb/pwc/pwc-if.c | |||
@@ -619,12 +619,15 @@ static void buffer_finish(struct vb2_buffer *vb) | |||
619 | struct pwc_device *pdev = vb2_get_drv_priv(vb->vb2_queue); | 619 | struct pwc_device *pdev = vb2_get_drv_priv(vb->vb2_queue); |
620 | struct pwc_frame_buf *buf = container_of(vb, struct pwc_frame_buf, vb); | 620 | struct pwc_frame_buf *buf = container_of(vb, struct pwc_frame_buf, vb); |
621 | 621 | ||
622 | /* | 622 | if (vb->state == VB2_BUF_STATE_DONE) { |
623 | * Application has called dqbuf and is getting back a buffer we've | 623 | /* |
624 | * filled, take the pwc data we've stored in buf->data and decompress | 624 | * Application has called dqbuf and is getting back a buffer |
625 | * it into a usable format, storing the result in the vb2_buffer | 625 | * we've filled, take the pwc data we've stored in buf->data |
626 | */ | 626 | * and decompress it into a usable format, storing the result |
627 | pwc_decompress(pdev, buf); | 627 | * in the vb2_buffer. |
628 | */ | ||
629 | pwc_decompress(pdev, buf); | ||
630 | } | ||
628 | } | 631 | } |
629 | 632 | ||
630 | static void buffer_cleanup(struct vb2_buffer *vb) | 633 | static void buffer_cleanup(struct vb2_buffer *vb) |