Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 174155
b: refs/heads/master
c: 3ec342f
h: refs/heads/master
i:
  174153: 6cc2991
  174151: 72b9c30
v: v3
  • Loading branch information
Jean-Francois Moine authored and Mauro Carvalho Chehab committed Dec 5, 2009
1 parent 317166a commit 69d8721
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 8157852f73f961b28d495bfa8374263d293b106d
refs/heads/master: 3ec342f25004c87c0d94de1bc1b5399685d58ad8
21 changes: 11 additions & 10 deletions trunk/drivers/media/video/gspca/gspca.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,6 @@ EXPORT_SYMBOL(gspca_get_i_frame);
static void fill_frame(struct gspca_dev *gspca_dev,
struct urb *urb)
{
struct gspca_frame *frame;
u8 *data; /* address of data in the iso message */
int i, len, st;
cam_pkt_op pkt_scan;
Expand All @@ -146,8 +145,8 @@ static void fill_frame(struct gspca_dev *gspca_dev,
for (i = 0; i < urb->number_of_packets; i++) {

/* check the availability of the frame buffer */
frame = gspca_get_i_frame(gspca_dev);
if (!frame) {
if ((gspca_dev->cur_frame->v4l2_buf.flags & BUF_ALL_FLAGS)
!= V4L2_BUF_FLAG_QUEUED) {
gspca_dev->last_packet_type = DISCARD_PACKET;
break;
}
Expand All @@ -173,7 +172,7 @@ static void fill_frame(struct gspca_dev *gspca_dev,
i, urb->iso_frame_desc[i].offset, len);
data = (u8 *) urb->transfer_buffer
+ urb->iso_frame_desc[i].offset;
pkt_scan(gspca_dev, frame, data, len);
pkt_scan(gspca_dev, gspca_dev->cur_frame, data, len);
}

resubmit:
Expand Down Expand Up @@ -204,7 +203,6 @@ static void isoc_irq(struct urb *urb)
static void bulk_irq(struct urb *urb)
{
struct gspca_dev *gspca_dev = (struct gspca_dev *) urb->context;
struct gspca_frame *frame;
int st;

PDEBUG(D_PACK, "bulk irq");
Expand All @@ -226,13 +224,13 @@ static void bulk_irq(struct urb *urb)
}

/* check the availability of the frame buffer */
frame = gspca_get_i_frame(gspca_dev);
if (!frame) {
if ((gspca_dev->cur_frame->v4l2_buf.flags & BUF_ALL_FLAGS)
!= V4L2_BUF_FLAG_QUEUED) {
gspca_dev->last_packet_type = DISCARD_PACKET;
} else {
PDEBUG(D_PACK, "packet l:%d", urb->actual_length);
gspca_dev->sd_desc->pkt_scan(gspca_dev,
frame,
gspca_dev->frame,
urb->transfer_buffer,
urb->actual_length);
}
Expand Down Expand Up @@ -260,13 +258,15 @@ static void bulk_irq(struct urb *urb)
*/
struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
enum gspca_packet_type packet_type,
struct gspca_frame *frame,
struct gspca_frame *dummy,
const __u8 *data,
int len)
{
struct gspca_frame *frame;
int i, j;

PDEBUG(D_PACK, "add t:%d l:%d", packet_type, len);
frame = gspca_dev->cur_frame;

/* when start of a new frame, if the current frame buffer
* is not queued, discard the whole frame */
Expand Down Expand Up @@ -315,7 +315,7 @@ struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
i,
gspca_dev->fr_o);
j = gspca_dev->fr_queue[i];
frame = &gspca_dev->frame[j];
gspca_dev->cur_frame = frame = &gspca_dev->frame[j];
}
return frame;
}
Expand Down Expand Up @@ -398,6 +398,7 @@ static int frame_alloc(struct gspca_dev *gspca_dev,
frame->v4l2_buf.m.offset = i * frsz;
}
gspca_dev->fr_i = gspca_dev->fr_o = gspca_dev->fr_q = 0;
gspca_dev->cur_frame = &gspca_dev->frame[0];
gspca_dev->last_packet_type = DISCARD_PACKET;
gspca_dev->sequence = 0;
return 0;
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/media/video/gspca/gspca.h
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ struct gspca_dev {

__u8 *frbuf; /* buffer for nframes */
struct gspca_frame frame[GSPCA_MAX_FRAMES];
struct gspca_frame *cur_frame; /* frame beeing filled */
__u32 frsz; /* frame size */
char nframes; /* number of frames */
char fr_i; /* frame being filled */
Expand Down

0 comments on commit 69d8721

Please sign in to comment.