diff options
Diffstat (limited to 'drivers/media/video/pwc/pwc-uncompress.c')
| -rw-r--r-- | drivers/media/video/pwc/pwc-uncompress.c | 17 | 
1 files changed, 6 insertions, 11 deletions
diff --git a/drivers/media/video/pwc/pwc-uncompress.c b/drivers/media/video/pwc/pwc-uncompress.c index 3b73f295f03..51265092bd3 100644 --- a/drivers/media/video/pwc/pwc-uncompress.c +++ b/drivers/media/video/pwc/pwc-uncompress.c @@ -30,26 +30,17 @@  #include <asm/types.h>  #include "pwc.h" -#include "pwc-uncompress.h"  #include "pwc-dec1.h"  #include "pwc-dec23.h" -int pwc_decompress(struct pwc_device *pdev) +int pwc_decompress(struct pwc_device *pdev, struct pwc_frame_buf *fbuf)  { -	struct pwc_frame_buf *fbuf;  	int n, line, col, stride;  	void *yuv, *image;  	u16 *src;  	u16 *dsty, *dstu, *dstv; -	if (pdev == NULL) -		return -EFAULT; - -	fbuf = pdev->read_frame; -	if (fbuf == NULL) -		return -EFAULT; -	image  = pdev->image_data; -	image += pdev->images[pdev->fill_image].offset; +	image = vb2_plane_vaddr(&fbuf->vb, 0);  	yuv = fbuf->data + pdev->frame_header_size;  /* Skip header */ @@ -64,9 +55,13 @@ int pwc_decompress(struct pwc_device *pdev)  			 * determine this using the type of the webcam */  		memcpy(raw_frame->cmd, pdev->cmd_buf, 4);  		memcpy(raw_frame+1, yuv, pdev->frame_size); +		vb2_set_plane_payload(&fbuf->vb, 0, +			pdev->frame_size + sizeof(struct pwc_raw_frame));  		return 0;  	} +	vb2_set_plane_payload(&fbuf->vb, 0, pdev->view.size); +  	if (pdev->vbandlength == 0) {  		/* Uncompressed mode.  		 * We copy the data into the output buffer, using the viewport  |