From: Hans de Goede <hdegoede@redhat.com>
To: Jean-Francois Moine <moinejf@free.fr>
Cc: "James Blanford" <jhblanford@gmail.com>,
"Erik Andrén" <erik.andren@gmail.com>,
"Linux Media Mailing List" <linux-media@vger.kernel.org>
Subject: PATCH: gscpa stv06xx + ov518: dont discard every other frame
Date: Sun, 04 Oct 2009 17:41:27 +0200 [thread overview]
Message-ID: <4AC8C227.4000301@redhat.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 954 bytes --]
Hi,
As noticed by James Blanford <jhblanford@gmail.com>, we were discarding
every other frame in stv06xx and the ov518 (part of ov519.c) drivers.
When we call gspca_frame_add, it returns a pointer to the frame passed in,
unless we call it with LAST_PACKET, when it will return a pointer to a
new frame in which to store the frame data for the next frame. So whenever
calling:
gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, len);
we should do this as:
frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, len);
So that any further data got from of the pkt we are handling in pkt_scan, goes
to the next frame.
We are not doing this in stv06xx.c pkt_scan method, which the cause of what
James is seeing. So I started checking all drivers, and we are not doing this
either in ov519.c when handling an ov518 bridge. So now the framerate of my
3 ov518 test cams has just doubled. Thanks James!
The attached patch fixes this.
Regards,
Hans
[-- Attachment #2: gspca-dont-discard-every-other-frame.patch --]
[-- Type: text/plain, Size: 1164 bytes --]
diff -r 5ad36b0c0e90 linux/drivers/media/video/gspca/ov519.c
--- a/linux/drivers/media/video/gspca/ov519.c Sun Oct 04 16:23:04 2009 +0200
+++ b/linux/drivers/media/video/gspca/ov519.c Sun Oct 04 17:26:43 2009 +0200
@@ -2939,7 +2939,7 @@
/* A false positive here is likely, until OVT gives me
* the definitive SOF/EOF format */
if ((!(data[0] | data[1] | data[2] | data[3] | data[5])) && data[6]) {
- gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, 0);
+ frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, 0);
gspca_frame_add(gspca_dev, FIRST_PACKET, frame, data, 0);
sd->packet_nr = 0;
}
diff -r 5ad36b0c0e90 linux/drivers/media/video/gspca/stv06xx/stv06xx.c
--- a/linux/drivers/media/video/gspca/stv06xx/stv06xx.c Sun Oct 04 16:23:04 2009 +0200
+++ b/linux/drivers/media/video/gspca/stv06xx/stv06xx.c Sun Oct 04 17:26:43 2009 +0200
@@ -394,7 +394,7 @@
PDEBUG(D_PACK, "End of frame detected");
/* Complete the last frame (if any) */
- gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, 0);
+ frame = gspca_frame_add(gspca_dev, LAST_PACKET, frame, data, 0);
if (chunk_len)
PDEBUG(D_ERR, "Chunk length is "
next reply other threads:[~2009-10-04 15:37 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-04 15:41 Hans de Goede [this message]
2009-10-04 16:24 ` PATCH: gscpa stv06xx + ov518: dont discard every other frame Erik Andrén
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4AC8C227.4000301@redhat.com \
--to=hdegoede@redhat.com \
--cc=erik.andren@gmail.com \
--cc=jhblanford@gmail.com \
--cc=linux-media@vger.kernel.org \
--cc=moinejf@free.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox