From: "Németh Márton" <nm127@freemail.hu>
To: Theodore Kilgore <kilgota@banach.math.auburn.edu>
Cc: Jean-Francois Moine <moinejf@free.fr>,
Hans de Goede <hdegoede@redhat.com>,
V4L Mailing List <linux-media@vger.kernel.org>,
Thomas Kaiser <thomas@kaiser-linux.li>,
Theodore Kilgore <kilgota@auburn.edu>,
Kyle Guinn <elyk03@gmail.com>
Subject: Re: [PATCH 1/3] gspca pac7302/pac7311: simplify pac_find_sof
Date: Mon, 02 Nov 2009 06:45:46 +0100 [thread overview]
Message-ID: <4AEE720A.50101@freemail.hu> (raw)
In-Reply-To: <alpine.LNX.2.00.0911012112421.7702@banach.math.auburn.edu>
Theodore Kilgore wrote:
>
> On Sun, 1 Nov 2009, Németh Márton wrote:
>> Remove struct sd dependency from pac_find_sof() function implementation.
>> This step prepares separation of pac7302 and pac7311 specific parts of
>> struct sd.
> [...]
> But here is the point. The sn9c2028 cameras have a structure which seems
> similar to the mr97310a cameras. They use a similar decompression
> algorithm. They have a similar frame header. Specifically, the sn9c2028
> frame header starts with the five bytes
>
> 0xff, 0xff, 0x00, 0xc4, 0xc4
>
> whereas the pac_common frame header starts with the five bytes
>
> 0xff, 0xff, 0x00, 0xff, 0x96
>
> Right now, for my own use, I have written a file sn9c2028.h which
> essentially duplicates the functionality of pac_common.h and contains a
> function which searches for the sn9c2028 SOF marker instead of searching
> for the pac SOF marker. Is this necessarily the good, permanent solution?
> I am not so sure about that.
I think the pac_find_sof() is a special case. To find a SOF sequence in
a bigger buffer in general needs to first analyze the SOF sequence for
repeated bytes. If there are repeated bytes the search have to be
continued in a different way, see the state machine currently in the
pac_common.h. To find the sn9c2028 frame header a different state machine
is needed. It might be possible to implement a search function which
can find any SOF sequence but I am afraid that this algorithm would be
too complicated because of the search string analysis.
> Perhaps when making changes it is a good time to think over the idea of
> combining things which are in fact not very much different. After all,
> another set of cameras might come along, too, which essentially requires
> yet another minor variation on the same basic algorithm. Then we are
> supposed to have three .h files with three functions which have the same
> code and just search for slightly different strings?
>
> I am well aware that you started out to do something different, but how
> does this strike you?
I was also thinking about not just duplicate the code but find functions
which are similar. My thinking was that first I try to separate the
pac7302 and pac7311 subdrivers and get feedback. If this change was
accepted I would look for common functions not only in pac7302 and pac7311
but also in the gspca family of subdrivers.
My first candidate would be the low level reg_w*() and reg_r*() functions.
I haven't finished the analysis but it seems that most of the time the
usb_control_msg() parameters are the same except the request and
requesttype parameter. The request contains a number specific to the
device. The requesttype usually contains USB_RECIP_DEVICE or
USB_RECIP_INTERFACE. This means that these function can be extracted
to a common helper module or to gspca_main and introduce the request
and requesttype values somehow to struct sd_desc in gspca.h.
Regards,
Márton Németh
next prev parent reply other threads:[~2009-11-02 5:45 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-01 21:59 [PATCH 1/3] gspca pac7302/pac7311: simplify pac_find_sof Németh Márton
2009-11-02 3:43 ` Theodore Kilgore
2009-11-02 5:45 ` Németh Márton [this message]
2009-11-02 16:32 ` Theodore Kilgore
2009-11-02 17:43 ` Németh Márton
2009-11-02 19:59 ` Theodore Kilgore
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=4AEE720A.50101@freemail.hu \
--to=nm127@freemail.hu \
--cc=elyk03@gmail.com \
--cc=hdegoede@redhat.com \
--cc=kilgota@auburn.edu \
--cc=kilgota@banach.math.auburn.edu \
--cc=linux-media@vger.kernel.org \
--cc=moinejf@free.fr \
--cc=thomas@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.