Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 174157
b: refs/heads/master
c: 76dd272
h: refs/heads/master
i:
  174155: 69d8721
v: v3
  • Loading branch information
Jean-Francois Moine authored and Mauro Carvalho Chehab committed Dec 5, 2009
1 parent fcc7aec commit 0a8b89e
Show file tree
Hide file tree
Showing 36 changed files with 241 additions and 288 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: d131c3c9e136cb5a817094c3dc4b7261b495cd6e
refs/heads/master: 76dd272b56cd1c7fa013ef5d7eb28c4d319e322b
12 changes: 5 additions & 7 deletions trunk/drivers/media/video/gspca/conex.c
Original file line number Diff line number Diff line change
Expand Up @@ -888,25 +888,23 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
}

static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */
__u8 *data, /* isoc packet */
u8 *data, /* isoc packet */
int len) /* iso packet length */
{
struct sd *sd = (struct sd *) gspca_dev;

if (data[0] == 0xff && data[1] == 0xd8) {

/* start of frame */
frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
data, 0);
gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);

/* put the JPEG header in the new frame */
gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
sd->jpeg_hdr, JPEG_HDR_SZ);
gspca_frame_add(gspca_dev, FIRST_PACKET,
sd->jpeg_hdr, JPEG_HDR_SZ);
data += 2;
len -= 2;
}
gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
}

static void setbrightness(struct gspca_dev*gspca_dev)
Expand Down
10 changes: 4 additions & 6 deletions trunk/drivers/media/video/gspca/etoms.c
Original file line number Diff line number Diff line change
Expand Up @@ -752,8 +752,7 @@ static void do_autogain(struct gspca_dev *gspca_dev)
#undef LIMIT

static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */
__u8 *data, /* isoc packet */
u8 *data, /* isoc packet */
int len) /* iso packet length */
{
int seqframe;
Expand All @@ -767,14 +766,13 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
data[2], data[3], data[4], data[5]);
data += 30;
/* don't change datalength as the chips provided it */
frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame,
data, 0);
gspca_frame_add(gspca_dev, FIRST_PACKET, frame, data, len);
gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
return;
}
if (len) {
data += 8;
gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
} else { /* Drop Packet */
gspca_dev->last_packet_type = DISCARD_PACKET;
}
Expand Down
23 changes: 7 additions & 16 deletions trunk/drivers/media/video/gspca/finepix.c
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,6 @@ static void dostream(struct work_struct *work)
struct gspca_dev *gspca_dev = &dev->gspca_dev;
struct urb *urb = gspca_dev->urb[0];
u8 *data = urb->transfer_buffer;
struct gspca_frame *frame;
int ret = 0;
int len;

Expand Down Expand Up @@ -118,10 +117,6 @@ static void dostream(struct work_struct *work)
}
if (!gspca_dev->present || !gspca_dev->streaming)
goto out;
frame = gspca_get_i_frame(&dev->gspca_dev);
if (frame == NULL)
gspca_dev->last_packet_type = DISCARD_PACKET;

if (len < FPIX_MAX_TRANSFER ||
(data[len - 2] == 0xff &&
data[len - 1] == 0xd9)) {
Expand All @@ -132,21 +127,17 @@ static void dostream(struct work_struct *work)
* but there's nothing we can do. We also end
* here if the the jpeg ends right at the end
* of the frame. */
if (frame)
frame = gspca_frame_add(gspca_dev,
LAST_PACKET,
frame,
data, len);
gspca_frame_add(gspca_dev, LAST_PACKET,
data, len);
break;
}

/* got a partial image */
if (frame)
gspca_frame_add(gspca_dev,
gspca_dev->last_packet_type
== LAST_PACKET
? FIRST_PACKET : INTER_PACKET,
frame, data, len);
gspca_frame_add(gspca_dev,
gspca_dev->last_packet_type
== LAST_PACKET
? FIRST_PACKET : INTER_PACKET,
data, len);
}

/* We must wait before trying reading the next
Expand Down
10 changes: 5 additions & 5 deletions trunk/drivers/media/video/gspca/gl860/gl860.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ static int sd_isoc_init(struct gspca_dev *gspca_dev);
static int sd_start(struct gspca_dev *gspca_dev);
static void sd_stop0(struct gspca_dev *gspca_dev);
static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, u8 *data, s32 len);
u8 *data, int len);
static void sd_callback(struct gspca_dev *gspca_dev);

static int gl860_guess_sensor(struct gspca_dev *gspca_dev,
Expand Down Expand Up @@ -433,7 +433,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev)

/* This function is called when an image is being received */
static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, u8 *data, s32 len)
u8 *data, int len)
{
struct sd *sd = (struct sd *) gspca_dev;
static s32 nSkipped;
Expand All @@ -445,11 +445,11 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
/* Test only against 0202h, so endianess does not matter */
switch (*(s16 *) data) {
case 0x0202: /* End of frame, start a new one */
frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, 0);
gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
nSkipped = 0;
if (sd->nbIm >= 0 && sd->nbIm < 10)
sd->nbIm++;
gspca_frame_add(gspca_dev, FIRST_PACKET, frame, data, 0);
gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0);
break;

default:
Expand All @@ -464,7 +464,7 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
nSkipped = nToSkip + 1;
}
gspca_frame_add(gspca_dev,
INTER_PACKET, frame, data, len);
INTER_PACKET, data, len);
}
break;
}
Expand Down
20 changes: 9 additions & 11 deletions trunk/drivers/media/video/gspca/gspca.c
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,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, gspca_dev->cur_frame, data, len);
pkt_scan(gspca_dev, data, len);
}

resubmit:
Expand Down Expand Up @@ -218,7 +218,6 @@ static void bulk_irq(struct urb *urb)

PDEBUG(D_PACK, "packet l:%d", urb->actual_length);
gspca_dev->sd_desc->pkt_scan(gspca_dev,
gspca_dev->frame,
urb->transfer_buffer,
urb->actual_length);

Expand All @@ -243,11 +242,10 @@ static void bulk_irq(struct urb *urb)
* DISCARD_PACKET invalidates the whole frame.
* On LAST_PACKET, a new frame is returned.
*/
struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
enum gspca_packet_type packet_type,
struct gspca_frame *dummy,
const __u8 *data,
int len)
void gspca_frame_add(struct gspca_dev *gspca_dev,
enum gspca_packet_type packet_type,
const u8 *data,
int len)
{
struct gspca_frame *frame;
int i, j;
Expand All @@ -259,7 +257,7 @@ struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
if ((frame->v4l2_buf.flags & BUF_ALL_FLAGS)
!= V4L2_BUF_FLAG_QUEUED) {
gspca_dev->last_packet_type = DISCARD_PACKET;
return frame;
return;
}

/* when start of a new frame, if the current frame buffer
Expand All @@ -272,7 +270,7 @@ struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
} else if (gspca_dev->last_packet_type == DISCARD_PACKET) {
if (packet_type == LAST_PACKET)
gspca_dev->last_packet_type = packet_type;
return frame;
return;
}

/* append the packet to the frame buffer */
Expand Down Expand Up @@ -304,9 +302,9 @@ struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
i,
gspca_dev->fr_o);
j = gspca_dev->fr_queue[i];
gspca_dev->cur_frame = frame = &gspca_dev->frame[j];
gspca_dev->cur_frame = &gspca_dev->frame[j];
}
return frame;
return;
}
EXPORT_SYMBOL(gspca_frame_add);

Expand Down
12 changes: 5 additions & 7 deletions trunk/drivers/media/video/gspca/gspca.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,7 @@ typedef int (*cam_streamparm_op) (struct gspca_dev *,
typedef int (*cam_qmnu_op) (struct gspca_dev *,
struct v4l2_querymenu *);
typedef void (*cam_pkt_op) (struct gspca_dev *gspca_dev,
struct gspca_frame *frame,
__u8 *data,
u8 *data,
int len);

struct ctrl {
Expand Down Expand Up @@ -192,11 +191,10 @@ int gspca_dev_probe(struct usb_interface *intf,
int dev_size,
struct module *module);
void gspca_disconnect(struct usb_interface *intf);
struct gspca_frame *gspca_frame_add(struct gspca_dev *gspca_dev,
enum gspca_packet_type packet_type,
struct gspca_frame *frame,
const __u8 *data,
int len);
void gspca_frame_add(struct gspca_dev *gspca_dev,
enum gspca_packet_type packet_type,
const u8 *data,
int len);
struct gspca_frame *gspca_get_i_frame(struct gspca_dev *gspca_dev);
#ifdef CONFIG_PM
int gspca_suspend(struct usb_interface *intf, pm_message_t message);
Expand Down
21 changes: 8 additions & 13 deletions trunk/drivers/media/video/gspca/jeilinj.c
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,6 @@ static void jlj_dostream(struct work_struct *work)
{
struct sd *dev = container_of(work, struct sd, work_struct);
struct gspca_dev *gspca_dev = &dev->gspca_dev;
struct gspca_frame *frame;
int blocks_left; /* 0x200-sized blocks remaining in current frame. */
int size_in_blocks;
int act_len;
Expand Down Expand Up @@ -214,15 +213,13 @@ static void jlj_dostream(struct work_struct *work)
PDEBUG(D_STREAM, "blocks_left = 0x%x", blocks_left);

/* Start a new frame, and add the JPEG header, first thing */
frame = gspca_get_i_frame(gspca_dev);
if (frame) {
gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
dev->jpeg_hdr, JPEG_HDR_SZ);
/* Toss line 0 of data block 0, keep the rest. */
gspca_frame_add(gspca_dev, INTER_PACKET,
frame, buffer + FRAME_HEADER_LEN,
gspca_frame_add(gspca_dev, FIRST_PACKET,
dev->jpeg_hdr, JPEG_HDR_SZ);
/* Toss line 0 of data block 0, keep the rest. */
gspca_frame_add(gspca_dev, INTER_PACKET,
buffer + FRAME_HEADER_LEN,
JEILINJ_MAX_TRANSFER - FRAME_HEADER_LEN);
}

while (blocks_left > 0) {
if (!gspca_dev->present)
goto quit_stream;
Expand All @@ -239,10 +236,8 @@ static void jlj_dostream(struct work_struct *work)
packet_type = LAST_PACKET;
else
packet_type = INTER_PACKET;
if (frame)
gspca_frame_add(gspca_dev, packet_type,
frame, buffer,
JEILINJ_MAX_TRANSFER);
gspca_frame_add(gspca_dev, packet_type,
buffer, JEILINJ_MAX_TRANSFER);
}
}
quit_stream:
Expand Down
25 changes: 16 additions & 9 deletions trunk/drivers/media/video/gspca/m5602/m5602_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -274,8 +274,7 @@ static int m5602_start_transfer(struct gspca_dev *gspca_dev)
}

static void m5602_urb_complete(struct gspca_dev *gspca_dev,
struct gspca_frame *frame,
__u8 *data, int len)
u8 *data, int len)
{
struct sd *sd = (struct sd *) gspca_dev;

Expand All @@ -295,19 +294,27 @@ static void m5602_urb_complete(struct gspca_dev *gspca_dev,
len -= 6;

/* Complete the last frame (if any) */
frame = gspca_frame_add(gspca_dev, LAST_PACKET,
frame, data, 0);
gspca_frame_add(gspca_dev, LAST_PACKET,
NULL, 0);
sd->frame_count++;

/* Create a new frame */
gspca_frame_add(gspca_dev, FIRST_PACKET, frame, data, len);
gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);

PDEBUG(D_FRAM, "Starting new frame %d",
sd->frame_count);

} else {
int cur_frame_len = frame->data_end - frame->data;
struct gspca_frame *frame;
int cur_frame_len;

frame = gspca_get_i_frame(gspca_dev);
if (frame == NULL) {
gspca_dev->last_packet_type = DISCARD_PACKET;
return;
}

cur_frame_len = frame->data_end - frame->data;
/* Remove urb header */
data += 4;
len -= 4;
Expand All @@ -316,12 +323,12 @@ static void m5602_urb_complete(struct gspca_dev *gspca_dev,
PDEBUG(D_FRAM, "Continuing frame %d copying %d bytes",
sd->frame_count, len);

gspca_frame_add(gspca_dev, INTER_PACKET, frame,
gspca_frame_add(gspca_dev, INTER_PACKET,
data, len);
} else if (frame->v4l2_buf.length - cur_frame_len > 0) {
/* Add the remaining data up to frame size */
gspca_frame_add(gspca_dev, INTER_PACKET, frame, data,
frame->v4l2_buf.length - cur_frame_len);
gspca_frame_add(gspca_dev, INTER_PACKET, data,
frame->v4l2_buf.length - cur_frame_len);
}
}
}
Expand Down
11 changes: 5 additions & 6 deletions trunk/drivers/media/video/gspca/mars.c
Original file line number Diff line number Diff line change
Expand Up @@ -325,8 +325,7 @@ static void sd_stop0(struct gspca_dev *gspca_dev)
}

static void sd_pkt_scan(struct gspca_dev *gspca_dev,
struct gspca_frame *frame, /* target */
__u8 *data, /* isoc packet */
u8 *data, /* isoc packet */
int len) /* iso packet length */
{
struct sd *sd = (struct sd *) gspca_dev;
Expand All @@ -348,19 +347,19 @@ static void sd_pkt_scan(struct gspca_dev *gspca_dev,
|| data[5 + p] == 0x67) {
PDEBUG(D_PACK, "sof offset: %d len: %d",
p, len);
frame = gspca_frame_add(gspca_dev, LAST_PACKET,
frame, data, p);
gspca_frame_add(gspca_dev, LAST_PACKET,
data, p);

/* put the JPEG header */
gspca_frame_add(gspca_dev, FIRST_PACKET, frame,
gspca_frame_add(gspca_dev, FIRST_PACKET,
sd->jpeg_hdr, JPEG_HDR_SZ);
data += p + 16;
len -= p + 16;
break;
}
}
}
gspca_frame_add(gspca_dev, INTER_PACKET, frame, data, len);
gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
}

static int sd_setbrightness(struct gspca_dev *gspca_dev, __s32 val)
Expand Down
Loading

0 comments on commit 0a8b89e

Please sign in to comment.