From: Kyle Guinn <elyk03@gmail.com>
To: Theodore Kilgore <kilgota@banach.math.auburn.edu>
Cc: Thomas Kaiser <v4l@kaiser-linux.li>,
Jean-Francois Moine <moinejf@free.fr>,
Hans de Goede <hdegoede@redhat.com>,
linux-media@vger.kernel.org
Subject: Re: RFC on proposed patches to mr97310a.c for gspca and v4l
Date: Thu, 16 Apr 2009 23:33:49 -0500 [thread overview]
Message-ID: <200904162333.49502.elyk03@gmail.com> (raw)
In-Reply-To: <alpine.LNX.2.00.0904161247530.10195@banach.math.auburn.edu>
On Thursday 16 April 2009 13:22:11 Theodore Kilgore wrote:
> On Thu, 16 Apr 2009, Kyle Guinn wrote:
> > On Wednesday 04 March 2009 02:41:05 Thomas Kaiser wrote:
> >> Hello Theodore
> >>
> >> kilgota@banach.math.auburn.edu wrote:
> >>> Also, after the byte indicator for the compression algorithm there are
> >>> some more bytes, and these almost definitely contain information which
> >>> could be valuable while doing image processing on the output. If they
> >>> are already kept and passed out of the module over to libv4lconvert,
> >>> then it would be very easy to do something with those bytes if it is
> >>> ever figured out precisely what they mean. But if it is not done now it
> >>> would have to be done then and would cause even more trouble.
> >>
> >> I sent it already in private mail to you. Here is the observation I made
> >> for the PAC207 SOF some years ago:
> >>
> >> From usb snoop.
> >> FF FF 00 FF 96 64 xx 00 xx xx xx xx xx xx 00 00
> >> 1. xx: looks like random value
> >> 2. xx: changed from 0x03 to 0x0b
> >> 3. xx: changed from 0x06 to 0x49
> >> 4. xx: changed from 0x07 to 0x55
> >> 5. xx: static 0x96
> >> 6. xx: static 0x80
> >> 7. xx: static 0xa0
> >>
> >> And I did play in Linux and could identify some fields :-) .
> >> In Linux the header looks like this:
> >>
> >> FF FF 00 FF 96 64 xx 00 xx xx xx xx xx xx F0 00
> >> 1. xx: don't know but value is changing between 0x00 to 0x07
> >> 2. xx: this is the actual pixel clock
> >> 3. xx: this is changing according light conditions from 0x03 (dark) to
> >> 0xfc (bright) (center)
> >> 4. xx: this is changing according light conditions from 0x03 (dark) to
> >> 0xfc (bright) (edge)
> >> 5. xx: set value "Digital Gain of Red"
> >> 6. xx: set value "Digital Gain of Green"
> >> 7. xx: set value "Digital Gain of Blue"
> >>
> >> Thomas
> >
> > I've been looking through the frame headers sent by the MR97310A (the
> > Aiptek PenCam VGA+, 08ca:0111). Here are my observations.
> >
> > FF FF 00 FF 96 6x x0 xx xx xx xx xx
> >
> > In binary that looks something like this:
> >
> > 11111111 11111111 00000000 11111111
> > 10010110 011001aa a1010000 bbbbbbbb
> > bbbbbbbb cccccccc ccccdddd dddddddd
> >
> > All of the values look to be MSbit first. A looks like a 3-bit frame
> > sequence number that seems to start with 1 and increments for each frame.
>
> Hmmm. This I never noticed. What you are saying is that the two bytes 6x
> and x0 are variable? You are sure about that? What I have previously
> experienced is that the first is always 64 with these cameras, and the
> second one indicates the absence of compression (in which case it is 0,
> which of course only arises for still cameras), or if there is data
> compression then it is not zero. I have never seen this byte to change
> during a session with a camera. Here is a little table of what I have
> previously witnessed, and perhaps you can suggest what to do in order to
> see this is not happening:
>
> Camera that byte compression solved, or not streaming
> Aiptek 00 no N/A no
> Aiptek 50 yes yes both
> the Sakar cam 00 no N/A no
> ditto 50 yes yes both
> Argus QuikClix 20 yes no doesn't work
> Argus DC1620 50 yes yes doesn't work
> CIF cameras 00 no N/A no
> ditto 50 yes yes no
> ditto d0 yes no yes
>
> Other strange facts are
>
> -- that the Sakar camera, the Argus QuikClix, and the
> DC1620 all share the same USB ID of 0x93a:0x010f and yet only one of them
> will stream with the existing driver. The other two go through the
> motions, but the isoc packets do not actually get sent, so there is no
> image coming out. I do not understand the reason for this; I have been
> trying to figure it out and it is rather weird. I should add that, yes,
> those two cameras were said to be capable of streaming when I bought them.
> Could it be a problem of age? I don't expect that, but maybe.
>
> -- the CIF cameras all share the USB id of 0x93a:0x010e (I bought several
> of them) and they all are using a different compression algorithm while
> streaming from what they use if running as still cameras in compressed
> mode. This leads to the question whether it is possible to set the
> compression algorithm during the initialization sequence, so that the
> camera also uses the "0x50" mode while streaming, because we already know
> how to use that mode.
>
> But I have never seen the 0x64 0xX0 bytes used to count the frames. Could
> you tell me how to repeat that? It certainly would knock down the validity
> of the above table wouldn't it?
>
I've modified libv4l to print out the 12-byte header before it skips over it.
Then when I fire up mplayer it prints out each header as each frame is
received. The framerate is only about 5 fps so there isn't a ton of data to
parse through. When I point the camera into a light I get this (at 640x480):
...
ff ff 00 ff 96 64 d0 c1 5c c6 00 00
ff ff 00 ff 96 65 50 c1 5c c6 00 00
ff ff 00 ff 96 65 d0 c1 5c c6 00 00
ff ff 00 ff 96 66 50 c1 5c c6 00 00
ff ff 00 ff 96 66 d0 c1 5c c6 00 00
ff ff 00 ff 96 67 50 c1 5c c6 00 00
ff ff 00 ff 96 67 d0 c1 5c c6 00 00
ff ff 00 ff 96 64 50 c1 5c c6 00 00
ff ff 00 ff 96 64 d0 c1 5c c6 00 00
ff ff 00 ff 96 65 50 c1 5c c6 00 00
...
Only those 3 bits change, and it looks like a counter to me. Take a look at
the gspca-mars (MR97113A?) subdriver. I think it tries to accommodate the
frame sequence number when looking for the SOF.
Maybe all or part of the 7 bytes between A and B specify the compression?
That explains all but the last row of your table since (0xd0 & 0x7f) == 0x50.
Double-check that it's actually d0 if you can, and that it is a constant d0
unlike the toggling between 50 and d0 above.
For your cameras that aren't streaming anything, do they stream in Windows?
If so, have you tried snooping the USB traffic? I'm curious if their drivers
use a slightly different initialization sequence, or if some of the
initialization data varies between runs. I know some of the initialization
data varied between runs for the pencam, and I don't know what kind of effect
it has on the camera.
-Kyle
next prev parent reply other threads:[~2009-04-17 4:33 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-17 19:09 MR97310A and other image formats Jean-Francois Moine
2009-02-17 19:35 ` Thomas Kaiser
2009-02-18 9:25 ` Jean-Francois Moine
2009-02-18 12:58 ` Thomas Kaiser
2009-02-18 19:17 ` Jean-Francois Moine
2009-02-17 19:43 ` Thomas Kaiser
2009-02-18 1:07 ` Kyle Guinn
2009-02-19 0:40 ` kilgota
2009-03-04 0:12 ` RFC on proposed patches to mr97310a.c for gspca and v4l kilgota
2009-03-04 2:50 ` Kyle Guinn
2009-03-04 5:21 ` kilgota
2009-03-04 8:41 ` Thomas Kaiser
2009-03-04 8:54 ` Thomas Kaiser
2009-03-04 19:01 ` kilgota
2009-03-05 13:02 ` Thomas Kaiser
2009-03-05 18:29 ` kilgota
2009-03-05 19:19 ` Thomas Kaiser
2009-03-05 19:45 ` kilgota
2009-03-05 20:29 ` Thomas Kaiser
2009-03-05 20:55 ` kilgota
2009-03-05 20:51 ` Thomas Kaiser
2009-04-15 23:59 ` Some questions about mr97310 controls (continuing previous thread on mr97310a.c) Theodore Kilgore
2009-04-16 16:10 ` Thomas Kaiser
2009-04-16 22:50 ` Theodore Kilgore
2009-04-17 8:36 ` Hans de Goede
2009-05-02 1:47 ` Progress with the MR97310A "CIF" cameras Theodore Kilgore
2009-04-16 5:14 ` RFC on proposed patches to mr97310a.c for gspca and v4l Kyle Guinn
2009-04-16 18:22 ` Theodore Kilgore
2009-04-17 4:33 ` Kyle Guinn [this message]
2009-04-17 17:50 ` Theodore Kilgore
2009-04-18 0:04 ` Kyle Guinn
2009-04-18 0:43 ` Theodore Kilgore
2009-04-21 1:18 ` RFC on proposed patches to mr97310a.c for gspca and v4l (headers) Theodore Kilgore
2009-04-21 2:44 ` Theodore Kilgore
2009-05-15 22:31 ` Preliminary results with an SN9C2028 camera Theodore Kilgore
2009-05-19 7:56 ` Hans de Goede
2009-05-19 18:18 ` Theodore Kilgore
2009-03-04 8:39 ` RFC on proposed patches to mr97310a.c for gspca and v4l Hans de Goede
2009-03-04 18:46 ` kilgota
2009-03-05 1:33 ` Kyle Guinn
2009-03-05 7:01 ` Hans de Goede
2009-03-04 8:35 ` Hans de Goede
2009-03-05 2:49 ` Kyle Guinn
2009-03-05 4:34 ` kilgota
2009-03-05 5:54 ` Kyle Guinn
2009-03-05 6:47 ` kilgota
2009-03-05 7:00 ` Hans de Goede
2009-03-05 19:08 ` kilgota
2009-03-05 19:07 ` Hans de Goede
2009-03-05 20:42 ` kilgota
2009-03-05 20:40 ` Hans de Goede
2009-03-05 20:58 ` kilgota
2009-03-06 1:21 ` Kyle Guinn
2009-03-06 1:57 ` kilgota
2009-03-28 22:42 ` [PATCH] to add new camera in gspca/mr97310a.c Theodore Kilgore
2009-02-19 18:17 ` MR97310A and other image formats kilgota
2009-02-19 19:17 ` Thomas Kaiser
2009-02-19 21:54 ` kilgota
2009-02-19 22:45 ` Thomas Kaiser
2009-02-19 23:50 ` kilgota
2009-02-20 0:52 ` Thomas Kaiser
2009-02-20 1:32 ` kilgota
2009-02-20 8:00 ` Thomas Kaiser
2009-02-20 18:45 ` kilgota
2009-02-20 19:05 ` Thomas Kaiser
2009-02-20 20:26 ` kilgota
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=200904162333.49502.elyk03@gmail.com \
--to=elyk03@gmail.com \
--cc=hdegoede@redhat.com \
--cc=kilgota@banach.math.auburn.edu \
--cc=linux-media@vger.kernel.org \
--cc=moinejf@free.fr \
--cc=v4l@kaiser-linux.li \
/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